mongoose更新无法处理禁用写入问题

时间:2015-01-14 22:30:17

标签: node.js mongodb mongoose

我想摆脱" db-operation完成后的回调" (希望提高node.js内部的性能 - 我正在更新几个100k文件,节点内存消耗需要很长时间才能达到1.5GB,并且一个核心最大化。)

MongoBooks是我的猫鼬模型。

这是带有回调的(测试)代码,它正在运行,它将文档插入空db:

MongoBooks.update({ isbn13: "abc" }, { isbn13: "abc", author: "andreas" }, { upsert: true }, function(err, res) {
        console.log(err, res);
    });

这是没有回调的代码和0的写入问题 - 这是我希望能提高性能的版本(确实如此)但是没有对数据库做任何事情(我通过集合上的mongo repl检查):< / p>

MongoBooks.update({ isbn13: "abc" }, { isbn13: "abc", author: "andreas" }, { upsert: true, w: 0 });

为什么 w:0 没有对数据库做任何事情?

1 个答案:

答案 0 :(得分:2)

根据Mongoose 3.8 release notes,您必须传递回调或明确告诉Mongoose执行“不安全”更新,方法是将true传递给回调参数。

所以它应该是:

MongoBooks.update({ isbn13: "abc" }, 
                  { isbn13: "abc", author: "andreas" }, 
                  { upsert: true, w: 0 },
                  true);