Mongodb 在update命令中使用两个push-es

Mongodb 在update命令中使用两个push-es,mongodb,Mongodb,答案可能是否定的,但我很好奇地问 我有一个文档,其中包含两个级别的数组: { '_id : '...' , events : [ urls : [], social_id : [] ], 'other_data' : '...' } 下面的代码可以工作。它在特定事件上更新url数组,并将事件['event_url']值(python)添加到该集合中 但是,在同一事件中,如果不存在社交id,我希望添加社交id db.col.update( { 'f_id' :

答案可能是否定的,但我很好奇地问

我有一个文档,其中包含两个级别的数组:

{ '_id : '...' , events : [ urls : [], social_id : [] ], 'other_data' : '...' }
下面的代码可以工作。它在特定事件上更新url数组,并将
事件['event_url']
值(python)添加到该集合中

但是,在同一事件中,如果不存在社交id,我希望添加社交id

db.col.update(
            {   'f_id'     :      venue['id'],
                "events.title" :  find_dict["events.title"]   },
            { '$addToSet': { 'events.$.social_id':  event['social_id']}   }
    )

我想知道是否可以将上述命令合并为一个命令,而不运行两次更新。我在文档中没有找到任何内容,但我想这值得一问。

您可以通过在
$addToSet
对象中包含这两个字段,将这两个更新合并为一个操作:

db.col.update(
{'f_id':地点['id'],“events.title”:查找目录[“events.title”],
{'$addToSet':{
“events.$.url.”:event['event\u url'],
“事件.$.social\u id.”:事件['social\u id']
}}
)
db.col.update(
            {   'f_id'     :      venue['id'],
                "events.title" :  find_dict["events.title"]   },
            { '$addToSet': { 'events.$.social_id':  event['social_id']}   }
    )