拉入mongoengine

时间:2012-01-31 12:55:26

标签: mongodb mongoengine

我有一个ListField(DictField),其中包含像

这样的项目
{'user_id': '12345', 'timestamp' : 'datetime-object'}

在mongoengine中,如何从user_id上查询的List中删除元素。例如,我想删除具有特定user_id的条目。我尝试了以下内容 -

update_one(pull__notes__user_id = '12345')

此处notes是集合的名称。

此语句返回1,但不会从List中删除该元素。我怎么能这样做?

1 个答案:

答案 0 :(得分:6)

两种方法:

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)匹配元素的一部分。    使用positional operator匹配元素并取消设置。

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)