如何使用Mongoclient更新单个文档的嵌入式文档列表字段?

乔治·佩拉基斯(Giorgos Perakis)

假设我们有以下内容。

class Post(Document):
    uid = StringField(required=True, unique=True)
    text = StringField(required=True
    comments = EmbeddedDocumentListField(Comment)

class Comment(EmbeddedDocument):
    comment_id = StringField(required=True)
    comment = StringField(required=True)
    datetime = DatetimeField()

因此,我们已经保存了没有任何评论帖子每个帖子都是唯一的

然后,我有一个Comments对象列表。我想做一个for循环,以一次一个地保存它们,或创建一个注释对象列表并更新一次。

另外,我想检查Post.comment列表字段中是否已经有一些Comment对象

我试过了

        for comment in comments:

            o_comment = Comment()
            o_comment.id = comment.get('id')
            o_comment.comment = comment.get('comment')
            o_comment.datetime = datetime.now()
            Post.objects(uid = 'some_id').update_one(push__comments = o_comment)

因此,这可行,但是它会附加文档而不进行检查。因此,如果我多次运行它,则会得到重复。

任何想法 ?再次感谢。

塞尔吉兹

尝试使用update_one(add_to_set__comments = <list_of_comments>)

comment1 = Comment(comment_id='1', comment='comment1', datetime=datetime.datetime.now())
comment2 = Comment(comment_id='2', comment='comment2', datetime=datetime.datetime.now())
comment3 = Comment(comment_id='3', comment='comment3', datetime=datetime.datetime.now())

comments1=[comment1, comment2]
comments2=[comment2, comment3]


Post.objects(uid = post.uid).update_one(add_to_set__comments = comments1)    
Post.objects(uid = post.uid).update_one(add_to_set__comments = comments2)

这2个更新将添加列表中的每个文档comments1comments2列表中的一个文档,因此comment2不会被添加两次。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

MongoClient:如何设置嵌入式文档的值

来自分类Dev

如何从mongodb中的嵌套嵌入式文档中查询和返回单个字段?

来自分类Dev

Mongo嵌入式文档字段查询

来自分类Dev

如何选择嵌入式文档列表作为根元素

来自分类Dev

猫鼬:如何更新子嵌入式文档数组?

来自分类Dev

如何根据其ID更新嵌入式文档?

来自分类Dev

mongoengine查询嵌入式文档列表

来自分类Dev

嵌入式文档中的批量更新

来自分类Dev

嵌入式文档中的批量更新

来自分类Dev

pymongo 嵌入式文档更新

来自分类Dev

MongoDB-Mongoose:如何使用Mongoose同时更新两个单独的嵌入式文档?

来自分类Dev

如何使用Mongoengine删除嵌入式文档?

来自分类Dev

如何在嵌入式文档数组上使用$ geoNear?

来自分类Dev

如何验证mongodb嵌入式文档

来自分类Dev

如何测试Mongoid的嵌入式文档?

来自分类Dev

如何对嵌入式文档进行排序?

来自分类Dev

如何删除重复的嵌入式文档

来自分类Dev

MongoDB-更新嵌入式文档和文档本身

来自分类Dev

何时使用嵌入式文档MongoDB

来自分类Dev

Mongodb node.js 查询嵌入式文档具有多个值的单个字段。

来自分类Dev

Mongoid在单个查询中推送新的嵌入式文档

来自分类Dev

Mongoid嵌入式文档属于_嵌入式文档

来自分类Dev

MongoDB C#驱动程序-更新嵌入式文档数组中的所有字段

来自分类Dev

如何在MongoDB中查询数组中的单个嵌入式文档?

来自分类Dev

MongoDB $ n在嵌入式文档的某些字段中

来自分类Dev

使用嵌入式文档列表或ObjectIds列表有区别吗?

来自分类Dev

mongoDB:如何获取嵌入式文档的最新字段(非数组)

来自分类Dev

如何在Mongoose中聚合嵌入式文档中的字段

来自分类Dev

如何在Mongoid中找到字段值为nil的嵌入式文档?

Related 相关文章

  1. 1

    MongoClient:如何设置嵌入式文档的值

  2. 2

    如何从mongodb中的嵌套嵌入式文档中查询和返回单个字段?

  3. 3

    Mongo嵌入式文档字段查询

  4. 4

    如何选择嵌入式文档列表作为根元素

  5. 5

    猫鼬:如何更新子嵌入式文档数组?

  6. 6

    如何根据其ID更新嵌入式文档?

  7. 7

    mongoengine查询嵌入式文档列表

  8. 8

    嵌入式文档中的批量更新

  9. 9

    嵌入式文档中的批量更新

  10. 10

    pymongo 嵌入式文档更新

  11. 11

    MongoDB-Mongoose:如何使用Mongoose同时更新两个单独的嵌入式文档?

  12. 12

    如何使用Mongoengine删除嵌入式文档?

  13. 13

    如何在嵌入式文档数组上使用$ geoNear?

  14. 14

    如何验证mongodb嵌入式文档

  15. 15

    如何测试Mongoid的嵌入式文档?

  16. 16

    如何对嵌入式文档进行排序?

  17. 17

    如何删除重复的嵌入式文档

  18. 18

    MongoDB-更新嵌入式文档和文档本身

  19. 19

    何时使用嵌入式文档MongoDB

  20. 20

    Mongodb node.js 查询嵌入式文档具有多个值的单个字段。

  21. 21

    Mongoid在单个查询中推送新的嵌入式文档

  22. 22

    Mongoid嵌入式文档属于_嵌入式文档

  23. 23

    MongoDB C#驱动程序-更新嵌入式文档数组中的所有字段

  24. 24

    如何在MongoDB中查询数组中的单个嵌入式文档?

  25. 25

    MongoDB $ n在嵌入式文档的某些字段中

  26. 26

    使用嵌入式文档列表或ObjectIds列表有区别吗?

  27. 27

    mongoDB:如何获取嵌入式文档的最新字段(非数组)

  28. 28

    如何在Mongoose中聚合嵌入式文档中的字段

  29. 29

    如何在Mongoid中找到字段值为nil的嵌入式文档?

热门标签

归档