我有两个不同的 mongoDB 查询,代表两种不同的条件,例如:
{ stuff: { $elemMatch: { foo: 1, bar: "a" } } }
和
{ stuff: { $elemMatch: { foo: 2, bar: "b" } } }
其中stuff
是设置了foo
和bar
字段的元素数组。
现在,我不确定如何匹配集合中同时符合上述两个条件的元素。
为了清楚起见:在这种情况下,我需要获得具有stuff
的一个元素的所有元素,其中foo
设置为1
且bar
设置为"a"
stuff
以及将foo
设置为2
并将bar
设置为"b"
的{{1}}的{{1}}元素。{/ p>
执行{ stuff: { $elemMatch: { foo: { $in: [1, 2] }, bar: { $in: ["a", "b"] } } }
是错误的,因为它对两个表达式(包括两个新表达式)的行为类似于OR
。
关于如何AND
他们的想法?
答案 0 :(得分:4)
只是要清楚:在这种情况下,我需要获得所有元素都包含一个元素的东西,其中foo设置为1,条形设置为“a”,还有一个元素的东西,其中foo设置为2栏设为“b”。
我希望我明白了。不应该是
db.coll.find({ $and: [
{ "stuff" : { $elemMatch : { "foo" : 1, "bar" : "a" } } },
{ "stuff" : { $elemMatch : { "foo" : 2, "bar" : "b" } } } ]});