【发布时间】:2014-06-09 23:04:46
【问题描述】:
我有两个不同的 mongoDB 查询,它们代表两个不同的条件,例如:
{ stuff: { $elemMatch: { foo: 1, bar: "a" } } }
和:
{ stuff: { $elemMatch: { foo: 2, bar: "b" } } }
其中stuff 是一个元素数组,其中设置了foo 和bar 字段。
现在,我不确定如何匹配集合中同时满足上述两个条件的元素。
要明确一点:在这种情况下,我需要获取所有具有 stuff 的一个元素的所有元素stuff 将 foo 设置为 2 并将 bar 设置为 "b"。
{ stuff: { $elemMatch: { foo: { $in: [1, 2] }, bar: { $in: ["a", "b"] } } } 是错误的,因为它在两个表达式(包括两个新表达式)上的行为类似于 OR。
知道如何AND他们吗?
【问题讨论】:
-
不太确定您想要完成什么。
stuff.foo怎么可能同时等于1和2呢?这只有在foo是一个数组时才有可能。在这种情况下,这是 stackoverflow.com/questions/5366687/… 的副本 -
@mnemosyn:嗯,也许是这样。谢谢指点! :)
-
@mnemosyn:所以,也许是:
{ stuff: { foo: { $all: [1, 2] } } }?但是,如果我有另一个字段,例如bar的内部元素stuff怎么办? (我会更新问题)