Mongodb - 包含元素但不包含另一个元素的数组

标签 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}]}
...

我的目标是列出所有具有 things 字段的对象,该字段包含具有 stuff=banana 但没有 stuff=apple 的元素>/p>

我试过这样的:

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/

相关文章:

node.js - Mongo 子查询嵌入文档

php - 如何通过新的 PHP pecl/mongodb 驱动程序 (1.1.2) 和库使用 MongoDB 组功能

java - 为什么首选使用不可变对象(immutable对象)作为 Set 的元素?

java - 为什么我的列表中的所有元素似乎都是相同的?

css - 元素背景图像不会呈现

angularjs - JSON 树 MongoDB

python - Tornado 网络电机在集合之间移动文档

jpa - JPA 是否为数据库中为空的集合属性返回 "null"或空集合?

java - RESTful Spring3 应用程序中对象集合的通用返回对象

css - 如何覆盖默认的 element.styles