我是一个Mongo文档,看起来像这样:
{
"_id" : "cfqjJW8WZprDSJEop",
"rName" : "z1",
"pName" : "P-4",
"ipAddress" : "21.1.1.12",
"misc" : {
"createdBy" : "admin",
"updatedBy" : "admin",
"creationTime" : ISODate("2016-09-15T09:43:10.953Z"),
"updatedTime" : ISODate("2016-09-15T09:43:10.953Z")
}
}
我在我的Meteor助手上编写了代码,以便在每次更新时,只将
updatedBy
和updatedTime
推送到mongo文档中。misc对象是在插入/更新之前添加的东西。
当我尝试使用以下方式更新记录时,遇到麻烦:
doc // contains the update document being generated.
misc = {};
misc.updatedBy = //some name
misc.updatedTime = new Date();
doc.misc = misc,
r.update(id,doc); // calling meteor update
然而,当更新发生时,实际上是查询将记录中的misc对象(包含createdBy和creationTime)完全替换为我传递的内容。我最终会丢失creationTime和createdBy字段。
我应该如何进行部分更新对象呢?
由于我的doc对象最初不包含misc对象,因此我还尝试注入类似以下内容的东西:
doc.$set.misc.updatedBy
但是它报错说updatedBy不存在。在文档中更新部分对象的正确方法是什么?