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

时间:2014-01-06 23:11:55

标签: mongodb

答案可能不是,但我很好奇。

我有一个Document,里面有两个级别的数组:

{ '_id : '...' , events : [ urls : [], social_id : [] ], 'other_data' : '...' }

以下代码有效。什么是更新特定事件的url数组并添加到设置event['event_url']值(python)。

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

然而,在同一事件中,我想添加一个社交ID,如果不存在。

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

如果可以将上述命令合并为一个而不是两次运行更新,我就会徘徊。我在文档中没有找到任何内容,但我想这值得一提。

1 个答案:

答案 0 :(得分:1)

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

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