[英]MongoDB query array where all elements match criteria
我收藏了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"}]}
有什么办法吗?
假设你有你的文件只有两个类型性别: male
和female
,所有不包含文件female
的性别类型,会自动将这些与每一个性别类型为male
。 因此,可以使用$nin
[ doc ] 。
当然,这是从您的示例中大量假设和推论得出的,这一点根本不清楚。 请格式化您的问题,使其正确而简洁,以便其他人可以从中受益。 谢谢。
这实际上是说出Abhishek Pathak已经说过的话的另一种方式:
您可以从可能的结果集中排除female
。 假设您的集合称为example
,则可以使用以下查询:
db.examples.find({"users.gender" : {$nin: ["female"]}})
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.