【问题标题】:MongoDB query array where all elements match criteriaMongoDB 查询数组,其中所有元素都匹配条件
【发布时间】:2014-09-30 10:15:18
【问题描述】:

我有 3 个文档的集合:

{"users":[{"id":1,"gender":"male"},{"id:1,"gender":"male"},{"id":1,"gender":"male"}]}
{"users":[{"id":1,"gender":"male"},{"id:1","gender":"male"},{"id":1,"gender":"female"}]}
{"users":[{"id":1,"gender":"female"},{"id":1,"gender":"female"},{"id":1,"gender":"female"}]}

我想写一个查询,其中每个性别都是男性(users.gender:"male"),结果只得到:

{"users":[{"id":1,"gender":"male"},{"id:1,"gender":"male"},{"id":1,"gender":"male"}]}

到目前为止,我能够获得至少一个字段符合条件的文档。所以我得到了:

{"users":[{"id":1,"gender":"male"},{"id:1","gender":"male"},{"id":1,"gender":"female"}]}
{"users":[{"id":1,"gender":"female"},{"id":1,"gender":"female"},{"id":1,"gender":"female"}]}

有什么办法吗?

【问题讨论】:

  • 请重新表述问题。那不是有效的json,这个例子没有意义。
  • 文档的 json 格式不正确。您能否编辑您的问题以更正此问题?

标签: arrays mongodb


【解决方案1】:

假设您的文档中只有两种性别类型:male 和female,所有不包含female 作为性别类型的文档,将自动成为所有性别类型为male 的文档.因此可以使用$nin[doc]。

当然,这是从您的示例中大量假设和推断的,这根本不清楚。请将您的问题格式化为正确和简洁,以便其他人受益。谢谢。

【讨论】:

    【解决方案2】:

    这实际上是 Abhishek Pathak 已经说过的另一种说法:

    您可以从可能的结果集中排除female。假设您的收藏名为 example,您可以使用以下查询:

    db.examples.find({"users.gender" : {$nin: ["female"]}})
    

    【讨论】:

      猜你喜欢
      • 2022-01-17
      • 2023-03-04
      • 2021-05-06
      • 2013-08-10
      • 2021-01-15
      • 1970-01-01
      • 1970-01-01
      • 2015-12-15
      • 2018-04-04
      相关资源
      最近更新 更多