【发布时间】:2014-10-16 23:26:10
【问题描述】:
当使用带有 upsert 的更新时,驱动程序是否将查询和 $set 对象结合起来。
这是一些示例代码
db.collection('objects').update({_key: 'test1'}, {$set: {a:1}}, {upsert: true, w: 1}, callback);
当我这样做时,如果文件 test1 不存在,mongo 似乎会插入以下文件。
{
_id: ,
_key: 'test1',
a: 1
}
因此它从查询中获取键并将其用作字段以及a:1
这和以下有什么不同:
var data = {
_key : 'test1',
a: 1
};
db.collection('objects').update({_key: 'test1'}, {$set: data}, {upsert: true, w: 1}, callback);
第二个会因为覆盖_key而变慢吗? _key 上有一个索引。
【问题讨论】:
标签: javascript node.js mongodb mongodb-query