据MongoDB的文档,语法$ elemMatch会,
t.find({ x : { $elemMatch : { a : 1, b : { $gt : 1 } } } })
我试图和它工作正常。 上面的意思是,它可以找到一个对象{a:1,b:'多于1'}是否存在于数组x中。
我有一个需求,我需要弄清楚,如果数组中的所有对象都存在于数据库中。
例如,假设我有一个数组,
a=[{a:1, b:2},{a:3, b:4}, {a:5, b:6}]
,我需要找出是否x包含所有的人。 ({x:{$ elemMatch:{a:{$ all:[1]},b:{$ all:[2]}}}}),找出所有包含{a :1,b:2}
但是,如果我尝试,t.find({ x : { $elemMatch : { a : {$all:[1,3]}, b : {$all:[2,4]} } } })
,它会失败。我知道这是不正确的。 有什么办法可以做到这一点? Ideallt,它应该是,
t.find({ x : { $elemMatch : {$all:[ {a:1, b:2}, {a:3, b:4}] } })
我想,这是行不通的。
这似乎解决了我的问题,即使我有第三个元素'c'存在。非常感谢 ! – user644745 2012-02-09 10:51:48
很酷。一定要在你的查询上运行explain()来查看索引打到什么样的性能。 – 2012-02-09 11:01:32
谢谢。幸运的是,我有另一个不需要调用这个查询的实现。 – user644745 2012-02-09 16:10:54