2015-04-21 33 views
0

我有以下代碼:如何使用pymongo獲取ObjectId的列表?

client = MongoClient() 
data_base = client.hkpr_restore 
agents_collection = data_base.agents 
agent_ids = agents_collection.find({},{"_id":1}) 

這給我的結果:

{u'_id': ObjectId('553020a8bf2e4e7a438b46d9')} 
{u'_id': ObjectId('553020a8bf2e4e7a438b46da')} 
{u'_id': ObjectId('553020a8bf2e4e7a438b46db')} 

如何我剛剛得到在的ObjectId的,所以我就可以使用每個ID搜索另一個集合?

+0

我沒有得到你。你輸出的結果如何。 –

回答

0

使用distinct

In [27]: agent_ids = agents_collection.find().distinct('_id') 

In [28]: agent_ids 
Out[28]: 
[ObjectId('553662940acf450bef638e6d'), 
ObjectId('553662940acf450bef638e6e'), 
ObjectId('553662940acf450bef638e6f')] 

In [29]: agent_id2 = [str(id) for id in agents_collection.find().distinct('_id')] 

In [30]: agent_id2 
Out[30]: 
['553662940acf450bef638e6d', 
'553662940acf450bef638e6e', 
'553662940acf450bef638e6f'] 
0

嘗試創建一個列表理解只有如下_ids

>>> client = MongoClient() 
>>> data_base = client.hkpr_restore 
>>> agents_collection = data_base.agents 
>>> result = agents_collection.find({},{"_id":1}) 
>>> agent_ids = [x["_id"] for x in result] 
>>> 
>>> print agent_ids 
[ ObjectId('553020a8bf2e4e7a438b46d9'), ObjectId('553020a8bf2e4e7a438b46da'), ObjectId('553020a8bf2e4e7a438b46db')] 
>>> 
+0

你的解決方案可以工作,但與pymongo你可以調用''不同''光標'對象 – styvane

+1

@邁克爾尼斯 – chridam