我的db中有以下doc:
{ "_id": ObjectId("ABCDEFG12345"), "options" : { "foo": "bar", "another": "something" }, "date" : { "created": 1234567890, "updated": 0 } }
我想更新options.foo
并date.updated
同时使用点符号,如下所示:
var mongojs = require('mongojs'); var optionName = 'foo'; var optionValue = 'baz'; var updates = {}; updates['options.' + optionName] = optionValue; updates['date.updated'] = new Date().getTime(); db.myCollection.findAndModify({ query : { _id : ObjectId('ABCDEFG12345') }, update : { $set : updates }, upsert : false, new : true }, function(error, doc, result) { console.log(doc.options); console.log(doc.date); });
这导致:
{ foo : 'baz', another : 'something' } { updated : 1234567890 }
具体来说,date.created
即使我使用点符号,我已经存在的字段也会被破坏.
为什么这只是部分工作?该options
子文档保留其预先存在的数据(options.another
),为什么不date
子文档保留其预先存在的数据?