Mongo投影结果作为所选项目的数组

时间:2016-05-13 19:16:09

标签: python mongodb mongodb-query pymongo

对于mongo中的给定文件

{"_id" : "joe":  
  grocerylist: [ "cheddar", "apple", "oranges" ]
} 
{"_id" : "joanna":  
grocerylist: [ "cheddar", "foobar" ]
}
{"_id" : "john": 
grocerylist: [ "apple", "oranges" ]
}

如果我在列表中搜索带有cheddar的用户

find({"grocerylist" : cheddar}, fields={'_id' : 1}) 

我得到了

[{u'_id': u'joe'}, {u'_id': u'joanna'}]

使用Mongo,我怎样才能获得匹配用户的列表,比如这个..

[u'joe', u'joanna']

感谢。

2 个答案:

答案 0 :(得分:1)

一种选择是使用列表理解:

cursor = db.col.find({"grocerylist" : cheddar}, fields={'_id' : 1}) 
print([document['user'] for document in cursor])

答案 1 :(得分:1)

_id在整个集合中都是唯一的,因此您可以在此处使用distinct

collection.distinct('_id', {'grocerylist' : cheddar})