我在Meteor中使用MongoDB。我发现要更新(,如果已经存在),数据或集合update()
中的插入可以与upsert: true
一起使用。还有一个名为upsert()
的方法,它也可用于更新/插入记录。
代码: (来自Meteor)
使用update
:
Collection.update({
_id: id
}, {
$set: {
content: 'SomeText'
}
}, {
upsert: true
});
使用upsert
:
Collection.upsert({
_id: id
}, {
$set: {
content: 'SomeText'
}
});
问题:
update()
upsert
标记设置为true
和upsert()
update()
或upsert()
答案 0 :(得分:7)
以下是来自流星源(https://github.com/meteor/meteor/blob/devel/packages/mongo/collection.js#L640)
的mongo代码Mongo.Collection.prototype.upsert = function upsert(
selector, modifier, options, callback) {
if (! callback && typeof options === "function") {
callback = options;
options = {};
}
const updateOptions = _.extend({}, options, {
_returnObject: true,
upsert: true
});
return this.update(selector, modifier, updateOptions, callback);
};
所以upsert
只是update
的一个简写,其中upsert
选项设置为true
。
没有什么不同,你可以使用你喜欢的任何功能
答案 1 :(得分:-2)
后一个upsert是javascript shell bulk operation的一个组件。我确定它没有被任何司机曝光到目前为止。