当前位置:  开发笔记 > 编程语言 > 正文

为什么mongo点符号替换整个子文档?

如何解决《为什么mongo点符号替换整个子文档?》经验,为你挑选了0个好方法。

我的db中有以下doc:

{
  "_id": ObjectId("ABCDEFG12345"),
  "options" : {
    "foo": "bar",
    "another": "something"
  },
  "date" : {
    "created": 1234567890,
    "updated": 0
  }
}

我想更新options.foodate.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子文档保留其预先存在的数据?

推荐阅读
有风吹过best
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有