use*_*422 3 collections element mongodb contain
我正在尝试查询我的mongodb集合之一,如下所示:
> db.collection.find()
{name: "foo", things: [{stuff:"banana", value: 1}, {stuff:"apple", value: 2}, {stuff:"strawberry", value: 3}]}
{name: "bar", things: [{stuff:"banana", value: 4}, {stuff:"pear", value: 5}]}
...
Run Code Online (Sandbox Code Playgroud)
我的目标是列出所有things包含元素stuff=banana但不包含元素的对象stuff=apple
我试过这样的事情:
db.transactions.find({
"things": {
$elemMatch: {
"stuff": "banana",
$ne: {
"stuff": "apple"
}
}
}
)
Run Code Online (Sandbox Code Playgroud)
但它不起作用.有任何想法吗?
以下查询将获取things包含stuff=banana但不包含元素的字段的所有文档的列表stuff=apple:
db.test.find({"$and":[{"things.stuff":"banana"}, {"things.stuff":{$ne:"apple"}}]})
Run Code Online (Sandbox Code Playgroud)
使用$not和$and运算符:
db.collection.find({
$and:[
{"things": {$elemMatch: { "stuff": "banana" }}},
{"things": {$not: {$elemMatch: { "stuff": "apple"}}}}
]
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4881 次 |
| 最近记录: |