Mongodb-包含元素但不包含另一个元素的数组
我正在尝试查询我的mongodb集合中的一个,如下所示:Mongodb-包含元素但不包含另一个元素的数组,mongodb,collections,element,contain,Mongodb,Collections,Element,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}]} ... d
> 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}]}
...
db.transactions.find({
"things": {
$elemMatch: {
"stuff": "banana",
$ne: {
"stuff": "apple"
}
}
}
)
我的目标是列出所有包含things
字段的对象,该字段包含stuff=banana
但不包含stuff=apple
我试过这样的方法:
> 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}]}
...
db.transactions.find({
"things": {
$elemMatch: {
"stuff": "banana",
$ne: {
"stuff": "apple"
}
}
}
)
但它不起作用。有什么想法吗?使用
$not
和$and
操作符:
db.collection.find({
$and:[
{"things": {$elemMatch: { "stuff": "banana" }}},
{"things": {$not: {$elemMatch: { "stuff": "apple"}}}}
]
});
下面的查询将获得所有文档的列表,这些文档的
things
字段包含stuff=banana
但不包含stuff=apple
的元素:
db.test.find({“$and”:[{“things.stuff”:“banana”},{“things.stuff”:{$ne:“apple”}]})
使用$in和$nin包含和排除
db.transactions.find({
"things.stuff": {
$in: ["banana"],
$nin:["apple"]
}
})