有没有办法过滤数组中的同一个字段?例如,我想寻找主色为黑色但不是紫色的汽车。 (即我想根据下面的例子返回car1)
我尝试过使用下面这些表达式,但是他们要么不返回任何内容。我尝试过使用$,但它似乎并不是正确的工具。
" info.colors" :{" $ elemMatch" :{" main" :{" $ in" :[" black"]}}," $ elemMatch" :{" main" :{" $ nin" :[" purple"]}}}
和
" info.colors" :{" $ elemMatch" :{" main" :{" $ in" :[" black"]," $ nin":[" purple"]}}}
[{
"car": "car1",
"info": {
"colors": [{
"main": "green",
"secondary": "blue"
}, {
"main": "black",
"secondary": "red"
}, {
"main": "yellow",
"secondary": "yellow"
}],
"price": "123"
},
"owner": "tom"
},
{
"car": "car2",
"info": {
"colors": [{
"main": "white",
"secondary": "red"
}, {
"main": "black",
"secondary": "red"
}, {
"main": "purple",
"secondary": "grey"
}],
"price": "123"
},
"owner": "dick"
}]
答案 0 :(得分:0)
单个条件不需要$elemMatch
。 $eq
后跟$ne
将为您效劳。
您可以使用带有隐式和。
的点表示法来访问嵌入式数组db.collection.find({"info.colors.main" : {$eq:"black", $ne: "purple"}})
隐含在同一领域。
https://docs.mongodb.com/manual/reference/operator/query/and/#op._S_and
有关查询嵌入式文档的详细信息。
https://docs.mongodb.com/manual/tutorial/query-array-of-documents/