如何在MongoDB中进行此类查询

时间:2015-06-05 02:10:57

标签: mongodb

以下是我的文档示例。

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

1 个答案:

答案 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的用户名。