以下是我的文档示例。
{ username: 'John', score: 10 },
{ username: 'John', score: 9 },
{ username: 'John', score: 8 },
{ username: 'Alice', score: 9 },
{ username: 'Bob', score: 7 }
我想选择score
从不为10的所有用户。
预期产出:
{ username: 'Alice', score: 9 },
{ username: 'Bob', score: 7 }
答案 0 :(得分:2)
根据您在上述答案中的评论,如果您的文件包含以下文件:
{ "_id" : ObjectId("55713e614e3a37ae89ef7b4b"), "username" : "John", "score" : 10 }
{ "_id" : ObjectId("55713e614e3a37ae89ef7b4c"), "username" : "John", "score" : 9 }
{ "_id" : ObjectId("55713e614e3a37ae89ef7b4d"), "username" : "John", "score" : 8 }
{ "_id" : ObjectId("55713e614e3a37ae89ef7b4e"), "username" : "Alice", "score" : 9 }
{ "_id" : ObjectId("55713e614e3a37ae89ef7b4f"), "username" : "Bob", "score" : 7 }
并且您希望显示分数从不 10 的用户表示您需要的上述条件Alice and Bob
数据。请查看以下查询:
db.collectionName.find({"username":{"$nin":db.collectionName.distinct("username",{"score":10})}})
db.collectionName.distinct("username",{"score":10})
用户的score:10
个不同的返回数组,并在查找中使用此数组来检查nin
数组中distinct
的用户名。