Jiv*_*van 5 python mongodb mongoengine
我有以下 MongoEngine 文档
{
'_id': 'some_id',
'data': 'some_data'
}
Run Code Online (Sandbox Code Playgroud)
如何delete使用 MongoEngine 编写此文档?
我试过的:
import my_collection
obj = my_collection.MyCol.objects.get(_id='some_id')
# obj is correctly found - let's continue
obj.delete()
# mongoengine.errors.ValidationError: 'None' is not a valid ObjectId
obj.delete('some_id')
# TypeError: delete() takes 1 positional argument but 2 were given
obj.delete(_id='some_id')
# mongoengine.errors.ValidationError: 'None' is not a valid ObjectId
Run Code Online (Sandbox Code Playgroud)
--注意
奇怪的是,以下工作完美:
my_collection.MyCol.objects.delete()
# delete all documents in the collection
Run Code Online (Sandbox Code Playgroud)
但是我已经关注了MongoEngine文档,但仍然无法仅删除一个特定的文档。
引用 mongoengine ObjecIds 时,不要使用下划线。
obj = my_collection.MyCol.objects.get(id='some_id')
Run Code Online (Sandbox Code Playgroud)
或者
obj = my_collection.MyCol.objects(id='some_id')
obj.delete()
Run Code Online (Sandbox Code Playgroud)
如果您的文档覆盖_id,您必须表明它仍然是主键。更改您的文档类定义:
class MyCol(Document):
_id = db.StringField()
...
Run Code Online (Sandbox Code Playgroud)
指定主键:
class MyCol(Document):
_id = db.StringField(primary_key=True)
...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4708 次 |
| 最近记录: |