2015-09-13 18 views
0

我正在使用pymongo燒瓶。 我的用例是,我可以將mongodb的文檔_id作爲整數(從關係存儲遷移的數據)或monogo的ObjectId()(生成)。如何讓mongodb(pymongo)返回_id作爲響應鍵值對而不是對象結構?

進去響應我分別得到這樣的事情在每種情況下:

第一種情況下(整數ID):

{ 
    "_id": 123456, 
    "name": "something.." 
} 

第二種情況用的ObjectId()

{ 
    "_id": 
     { 
      "$oid": "55f5efc60640fd09620c109c" 
     }, 
    "name": "something.." 
} 

我想在這兩種情況下具有統一的結構 - 所以我想第二種情況要像 -

{ 
    "_id": "55f5efc60640fd09620c109c", 
    "name": "something.." 
} 

如何實現這一目標? 除了遍歷每個結果並替換值之外?

回答

1

找到解決我的問題,分享,這樣可以幫助別人。

在mongo中沒有模式,所以你可以把_id的值作爲任何東西(整數/對象/字符串,就像我的情況一樣)。

在Python中,我這樣做是爲了有命令鍵 - 值對結構:

from bson.objectid import ObjectId 
new_doc = db.collection.insert({'_id': str(ObjectId())}) // This won't create additional _id field in your document. 

不要找到像:

doc = db.collections.find_one({'_id': "12-char-mongodb-type-id"}) 
doc = db.collections.find_one({'_id': 12345}) 
相關問題