私はMongoに簡単な挿入をしています...
db.notes.insert({ title: "title", details: "note details"})
ノートドキュメントを挿入したら、すぐにオブジェクトIDを取得する必要があります。挿入から返される結果には、接続とエラーに関する基本的な情報が含まれていますが、ドキュメントとフィールドの情報はありません。
Upsert = trueでupdate()関数を使用することに関する情報を見つけました。それが正しい方法であるかどうかはわかりませんが、まだ試していません。
MongoDBの素晴らしい点の1つは、IDがクライアント側で生成されることです。
つまり、最初に保存するものを指定したため、サーバーにidを尋ねる必要さえありません。 pymongoを使用すると、挿入の戻り値はオブジェクトIDになります。見てみな:
>>> import pymongo
>>> collection = pymongo.Connection()['test']['tyler']
>>> _id = collection.insert({"name": "tyler"})
>>> print _id
4f0b2f55096f7622f6000000
タイラーからの答えは私にはうまくいきません。 _id.inserted_idの使用は機能します
>>> import pymongo
>>> collection = pymongo.Connection()['test']['tyler']
>>> _id = collection.insert({"name": "tyler"})
>>> print(_id)
<pymongo.results.InsertOneResult object at 0x0A7EABCD>
>>> print(_id.inserted_id)
5acf02400000000968ba447f
Insert()の代わりにinsert_one()またはinsert_many()を使用することをお勧めします。これら2つは、新しいバージョン用です。 Inserted_idを使用してIDを取得できます。
myclient = pymongo.MongoClient("mongodb://localhost:27017/")
myDB = myclient["myDB"]
userTable = myDB["Users"]
userDict={"name": "tyler"}
_id = userTable.insert_one(userDict).inserted_id
print(_id)
または
result = userTable.insert_one(userDict)
print(result.inserted_id)
print(result.acknowledged)
Insert()を使用する必要がある場合は、次の行のように記述する必要があります。
_id = userTable.insert(userDict)
print(_id)
新しいPyMongoバージョンはinsert
を減価し、代わりにinsert_one
またはinsert_many
を使用する必要があります。これらの関数は、pymongo.results.InsertOneResult
またはpymongo.results.InsertManyResult
オブジェクトを返します。
これらのオブジェクトを使用すると、.inserted_id
プロパティと.inserted_ids
プロパティをそれぞれ使用して、挿入されたオブジェクトIDを取得できます。
insert_one
およびinsert_many
の詳細については this リンクを、pymongo.results.InsertOneResult
の詳細については this リンクを参照してください。
更新;正しくなかったため、以前は削除されました
db.notes.save(...)
でも実行できるようです。挿入すると、_idが返されます。
詳細情報を参照してください: http://api.mongodb.org/python/current/api/pymongo/collection.html
何らかの変数にそれを割り当てる必要があります:
someVar = db.notes.insert({ title: "title", details: "note details"})