Mongodb - 包含元素但不包含另一个元素的数组
Posted
技术标签:
【中文标题】Mongodb - 包含元素但不包含另一个元素的数组【英文标题】:Mongodb - Array containing element and not containing another one 【发布时间】:2014-05-02 23:11:43 【问题描述】:我正在尝试查询我的一个 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]
...
我的目标是列出所有具有 things
字段的对象,该字段包含带有 stuff=banana
但没有 stuff=apple
的元素
我尝试过这样的事情:
db.transactions.find(
"things":
$elemMatch:
"stuff": "banana",
$ne:
"stuff": "apple"
)
但它不起作用。有什么想法吗?
【问题讨论】:
【参考方案1】:以下查询将获取所有具有things
字段的文档的列表,该字段包含stuff=banana
但没有stuff=apple
的元素:
db.test.find("$and":["things.stuff":"banana", "things.stuff":$ne:"apple"])
【讨论】:
【参考方案2】:使用 $in 和 $nin 来包含和排除
db.transactions.find(
"things.stuff":
$in: ["banana"],
$nin:["apple"]
)
【讨论】:
【参考方案3】:使用$not
和$and
运算符:
db.collection.find(
$and:[
"things": $elemMatch: "stuff": "banana" ,
"things": $not: $elemMatch: "stuff": "apple"
]
);
【讨论】:
以上是关于Mongodb - 包含元素但不包含另一个元素的数组的主要内容,如果未能解决你的问题,请参考以下文章
返回文档,其中数组元素包含输入数组的所有值 | MongoDB