答案可能不是,但我很好奇。
我有一个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']} }
)
如果可以将上述命令合并为一个而不是两次运行更新,我就会徘徊。我在文档中没有找到任何内容,但我想这值得一提。
答案 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']
}}
)