pul*_*hal 6 mongodb node.js node-mongodb-native
我正在使用 nodejs 客户端来循环输入并创建一个将传递给bulkWrite
操作的值数组:
var updateVal = { sku: item.sku, name: item.name, updatedAt: new Date()};
var insertVal = { sku: item.sku, name: item.name, createdAt: new Date(), updatedAt: new Date()};
itemsToSave.push({
updateOne: {
filter: {
sku: item.sku
},
//update: { $set: updateVal }, // works
//update: { $setOnInsert: insertVal }, // works
update: { $set: updateVal, $setOnInsert: insertVal }, // DOES NOT work
upsert:true
}
});
Run Code Online (Sandbox Code Playgroud)
但由于某些原因,我不能混用$set
和$setOnInsert
......当我运行它,什么也没有发生,它就像一个无操作。这是批量操作的限制吗?
我正在使用 node-mongodb-native/2.1 来处理 mongodb 3.0.7
setOnInsert的文档表明这应该是可能的:
...
{
$set: { item: "apple" },
$setOnInsert: { defaultQty: 100 }
},
{ upsert: true }
Run Code Online (Sandbox Code Playgroud)
这就是为什么我的问题是将它与 bulkWrite 一起使用
这有效:
update: {
$currentDate: { updatedAt: true },
$set: updateVal,
$setOnInsert: {
createdAt: new Date()
}
},
upsert:true
Run Code Online (Sandbox Code Playgroud)
感谢通过 github 代码搜索找到的示例:https : //github.com/rainder/node-process-stat/blob/22899f49413314402645ae57bc691bd389d226bd/src/server/router/log.js#L49-L59
归档时间: |
|
查看次数: |
1610 次 |
最近记录: |