我正在尝试查询如下所示的 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"
      }
    }
  }
)

但它不起作用。有任何想法吗?

最佳答案

下面的查询将获取包含 things 字段的所有文档的列表,该字段包含具有 stuff=banana 但没有 stuff=apple 的元素:

db.test.find({"$and":[{"things.stuff":"banana"}, {"things.stuff":{$ne:"apple"}}]})

关于Mongodb - 包含元素但不包含另一个元素的数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22628999/

10-11 07:35
查看更多