如何查询与数组中对象的确切字段匹配的集合?如何查询与数组中对象的确切字段匹配的集合
由于测试用例更加明确,因此这里是要通过的测试。
a = Invitation.create(guests: [ Guest.new(player: 'bbb'), Guest.new(player: 'ccc') ])
b = Invitation.create(guests: [ Guest.new(player: 'ccc'), Guest.new(player: 'bbb') ])
c = Invitation.create(guests: [ Guest.new(player: 'bbb'), Guest.new(player: 'ccc'), Guest.new(player: 'ddd') ])
# Request to find invitation with bbb and ccc as player_id of guests, regardless the order.
result = Invitation.collection.find(...)
assert_equal result, [ a, b ]
我用例是一个邀请系统,其中的客人相同的组合可以不存在,所以当发送一个新的邀请,我需要检查,如果一个完全相同的人(不管它们的顺序)。
注:我使用一个Guest对象数组,因为它携带一些额外的数据。这里是一个示例数据集(https://gist.github.com/anonymous/5507735)。
你能提供一个mongo记录的例子吗? db.Invitation.findOne()会做的。 – shargors 2013-05-02 19:05:47
我编辑帖子以添加示例数据集(https://gist.github.com/anonymous/5507735)。 – 2013-05-03 07:35:58