2012-01-09 9 views
30

ノート文書が挿入された後、私は...挿入後にPyMongoでオブジェクトIDを取得するには?

db.notes.insert({ title: "title", details: "note details"}) 

をモンゴへの簡単な挿入をやっている、私はすぐにオブジェクトIDを取得する必要があります。挿入物から戻ってくる結果には、接続やエラーに関する基本的な情報がありますが、文書やフィールド情報はありません。

upsert = trueでupdate()関数を使用する方法についていくつかの情報がありましたが、それが正しい方法であるかどうかはまだ分かりませんが、まだ試していません。

答えて

2

更新;それが正しくないために前に削除されました

db.notes.save(...)と同じように見えますが、これは挿入を実行した後に_idを返します。

詳細はを参照してください:MongoDBの程度クールなものの http://api.mongodb.org/python/current/api/pymongo/collection.html

+0

ごめんなさい、少し動揺していたpymongo - アップデートされた答えによって混乱しました。 –

+1

save(D)は、実際には、Dが_idフィールドを持つかどうかによって挿入(D)または更新(D._id、D)のいずれかのドライバ側の便利なメソッドであることに注意してくださいそれは) –

62

一つは、IDはクライアント側を生成していることです。

これは、最初に保存する内容を教えてくれたため、IDが何であったかをサーバーに尋ねる必要はありません。 pymongoを使用すると、挿入の戻り値がオブジェクトIDになります。それをチェックしてください:

>>> import pymongo 
>>> collection = pymongo.Connection()['test']['tyler'] 
>>> _id = collection.insert({"name": "tyler"}) 
>>> print _id 
4f0b2f55096f7622f6000000 
+2

これは正しいとマークする必要があります。ありがとう! –

+0

問題はありません。Shane –

+1

名前に '_id'または' id_'を使うことをお勧めします。私はPythonで 'id'を使用していませんが、組み込みの関数名を使わない方がいいでしょう。 – beardc

関連する問題