假设我在一个集合中有三个文档:
{
...
houses: [{state: 'CA', quantity: 2}, {state: 'NY', quantity: 2}]
},
{
...
houses: [{state: 'CA', quantity: 1}, {state: 'NY', quantity: 2}]
}
{
...
houses: [{state: 'NY', quantity: 2}]
}
我想写一个与“在加利福尼亚或纽约有多个房子的人”相匹配的查询。我知道我可以执行类似{houses.state: {$in: ['CA', 'NY']}}
之类的操作,但如何将其与$gt
结合使用才能获得匹配?
答案 0 :(得分:3)
如果要匹配相同数组元素中的多个条件,则需要使用$elemMatch
:
db.test.find({
houses: {$elemMatch: {state: {$in: ['CA', 'NY']}, quantity: {$gt: 1}}}
})