我有以下MongoEngine文档
{
'_id': 'some_id',
'data': 'some_data'
}我如何使用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-注
奇怪的是,以下内容工作得很完美:
my_collection.MyCol.objects.delete()
# delete all documents in the collection但是我已经跟踪了MongoEngine文档,仍然无法删除一个特定的文档。
发布于 2016-10-15 18:13:37
如果您的文档覆盖_id,则必须指示它仍然是主键。将文档类定义更改为:
class MyCol(Document):
_id = db.StringField()
...若要指定主键,请执行以下操作:
class MyCol(Document):
_id = db.StringField(primary_key=True)
...发布于 2016-10-28 22:31:57
在引用mongoengine ObjecIds时,不使用下划线。
obj = my_collection.MyCol.objects.get(id='some_id')或
obj = my_collection.MyCol.objects(id='some_id')
obj.delete()发布于 2016-05-26 16:33:49
据我所知,根据文档中的注意事项
请注意,只有当文档存在于数据库中并且具有有效的id时,这才能工作。
只有当对象ID -- obj.delete()属性--具有有效的ObjectId值时,ObjectId才能工作。在您的示例中,您没有定义obj.id,请使用objects.delete()语法:
my_collection.MyCol.objects.delete()https://stackoverflow.com/questions/37466212
复制相似问题