我正在推送一个updateOne查询来更新(或创建一个不存在的)子文档。这是我的模式
{
accountData: {
userId: Number,
items: [
{
itemId: Number,
purchaseTime: Number
}
]
}
}
这是示例文档
{
accountData: {
userId: 1,
items: [
{
itemId: 2,
purchaseTime: 3
},
{
itemId: 3,
purchaseTime: 5
}
]
}
}
当我运行以下批量查询以查找和更新itemId的2和4的PurchaseTime值时,出现错误。这是查询
let bulkQuery = [];
bulkQuery.push({
updateOne: {
filter: {
'accountData.userId': 1,
'accountData.items.itemId': 2
},
update: {
$inc: {
'accountData.items.$.purchaseTime': 1
}
},
upsert: true,
setDefaultsOnInsert: true
}
});
bulkQuery.push({
updateOne: {
filter: {
'accountData.userId': 1,
'accountData.items.itemId': 4
},
update: {
$inc: {
'accountData.items.$.purchaseTime': 1
}
},
upsert: true,
setDefaultsOnInsert: true
}
});
MyModel.bulkWrite(bulkQuery);
我提供的文档的预期更改是将itemId = 2的purchaseTime从3增加到4,并添加一个具有itemId = 4和PurchaseTime = 1的新item对象。但是,运行此命令时,出现以下错误
BulkWriteError:位置运算符未找到所需的匹配项 从查询中。未展开的更新:accountData.items。$。purchaseTime