pymongo 嵌入式文档更新

幸运星

我在 MongoDB 3.6 中有以下文档

        forum_collection = { '_id' : id,
                         'tags': tags,
                         'sub_topic_name' : sub_topic_name,
                         'topic_creator' : creator_name,
                         'main_forum_name' : forum_name,
                         'threads' : [ {'thread_id' = uuid4,
                                        'thread_title = title,
                                        'thread_author = author,
                                        'thread_comment_cout = 0,
                                        'thread_body' = content,
                                        'thread_comments' = [ {'thread_comment_id' : uuid4,
                                                               'thread_comment_body': content,
                                                               'thread_commenter' : author,
                                                               'thread_comment_time'   : time
                                                               },
                                                            ]
                                        'thread_time' = time,
                                        },

                                     ],

所以我想要有多个 sub_topics 的 forum_collection,每个 sub_topics 都有线程,每个线程都有评论。

如何添加新的子评论并将 thread_comment_count 更新为 1 ?我的以下尝试失败了……我的函数传递了三个变量,sub_topic(查询 sub_topic_name)、thread(查询 thread_id)和 thread_vals(将新评论附加到 thread_id)

forum_collection.find_one_and_update({'sub_topic_name': sub_topic, 'threads.thread_id' : thread},
                                     {'$inc': {'threads.'+thread+'.thread_comments_count': 1},
                                      '$addToSet': {thread + '.threads_comment': thread_vals}},
                                      return_document=pymongo.ReturnDocument.AFTER
                                     )
幸运星

我需要在适当的地方添加 $ ......所以不是'threads.'+thread+'.thread_comments_count'而是'threads.$.thread_comments_count'......

forum_collection.find_one_and_update({'sub_topic_name': sub_topic, 'threads.thread_id' : thread},
                                 {'$inc': {'threads.$.thread_comments_count': 1},
                                  '$addToSet': {'threads.$.thread_comments': thread_vals}},
                                  return_document=pymongo.ReturnDocument.AFTER
                                 )

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章