findAndModify使用变量键的对象

时间:2015-09-23 16:54:26

标签: mongodb mongodb-query

我正在尝试更新具有变量键和与该键关联的预先存在的对象的记录,如下所示:

[variable_name] : {
    date : 'XXXX'
}

如何在不删除现有数据的情况下使用findAndModify()在该结构中插入更多键值?我无法使用$ set和类似updateObj[variable_name] = { newProp : newData }的更新对象来解决这个问题。

2 个答案:

答案 0 :(得分:0)

$set 运算符与 dot notation 一起使用,以在嵌入文档中指定新字段。例如,由于newProp字段不存在而您为该不存在的字段指定了虚线路径, $set 将添加具有指定值的新字段,从而创建根据需要嵌入文档以实现到该字段的虚线路径。当没有文档与查询条件匹配时,{upsert: true}标志会创建一个新文档。默认值为false,如果未找到匹配项,则不会插入新文档:

db.collection.update(
   { "variable_name.date": ISODate("2015-09-23T18:06:00.696Z") },
   { $set: { "variable_name.newProp": "zzz" } },
   { "upsert": true }
)

答案 1 :(得分:0)

该问题的答案为时已晚,但希望对其他人有帮助。

您可以使用Template LiteralsComputed Property

执行以下操作
const key = `${variable_name}.newProp`;
db.update({_id: myId}, { $set: { [key]: newData } });