Mongodb 拉入式发动机

Mongodb 拉入式发动机,mongodb,mongoengine,Mongodb,Mongoengine,我有一个列表字段(DictField),其中包含如下项- {'user_id': '12345', 'timestamp' : 'datetime-object'} 在mongoengine中,如何从用户id查询的列表中删除元素。例如,我想删除具有特定用户id的条目。我尝试了以下操作- update_one(pull__notes__user_id = '12345') 此处notes是集合的名称 此语句返回1,但不会从列表中删除元素。我如何才能做到这一点?有两种方法: A) 完全匹配元素:

我有一个
列表字段(DictField)
,其中包含如下项-

{'user_id': '12345', 'timestamp' : 'datetime-object'}
在mongoengine中,如何从用户id查询的列表中删除元素。例如,我想删除具有特定用户id的条目。我尝试了以下操作-

update_one(pull__notes__user_id = '12345')
此处
notes
是集合的名称


此语句返回
1
,但不会从列表中删除元素。我如何才能做到这一点?

有两种方法:

A) 完全匹配元素:

class Simple(Document):
    x = ListField()

Simple.drop_collection()
Simple(x=[{'hello': 'world'}, {'mongo': 'db'}]).save()

// Pull the dict
Simple.objects.update_one(pull__x={'mongo': 'db'})
B) 匹配元素的一部分。 使用来匹配元素并将其取消设置

class Simple(Document):
    x = ListField()

Simple.drop_collection()
Simple(x=[{'hello': 'world'}, {'mongo': 'db'}]).save()

// Set to None
Simple.objects.update_one(unset__x__S__mongo='db')
// Pull None
Simple.objects.update_one(pull__x=None)

我不能使用第一个选项。第二个备选方案给了我以下错误-AttributeError:“BaseField”对象没有属性“lookup\u member”您能提供您的模式,然后我应该能够进行测试:)还有什么版本的mongoengine?