4

私は PyMongo の初心者の質問があります: collectionPyMongoコレクションであり、それを使用してオブジェクトを保存する場合

obj = {'foo': 'bar'}
collection.insert(obj)

次に、MongoDB は の_idフィールドを自動的に生成しますobj。一度これを確認することができます

print obj

次のような結果が得られます

{'foo': 'bar', '_id': ObjectId('4c2fea1d289c7d837e000000')}

_id私の質問は、それを使用できるように戻すにはどうすればよいですか?

たとえばobj、データベースから削除したい場合、次のようなことをしたいと思うでしょう

collection.remove(obj['_id'])

しかし、これを試してみると、メッセージが表示されます

TypeError: 'ObjectId' object is unsubscriptable.

どうしたの?

4

4 に答える 4

12

You just need to pass remove a dict, just like you did insert. So, to remove a document based on its _id value, do something like:

collection.remove({'_id': ObjectId('4c2fea1d289c7d837e000000')})
于 2010-06-22T00:21:23.010 に答える
3

insertは、挿入されたドキュメントの_idを返します。

そしてremoveは_idに基づいて削除するので、次のようにしてみてください。

doc_id = db.test.insert({"foo": 1})
db.test.remove(doc_id)
于 2010-06-22T00:58:26.207 に答える
1

あなたはただ渡すことができますobj

于 2010-06-21T23:22:09.970 に答える
-1

ドキュメントからオブジェクトを削除するには、ドキュメントに「_id」を指定できるため、条件に言及する必要があります........

_id = db.test.insert({"foo": "test"})
db.test.remove({"_id":_id})
于 2011-01-04T06:53:34.760 に答える