所有元素都符合条件的MongoDB查询数组

时间:2014-09-30 10:15:19

标签: arrays mongodb

我收集了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:“男性”),因此只能得到:

{"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"}]}

有什么办法吗?

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

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

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

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