我正在研究一个基于原始对象和更改对象生成mongodb修改器对象的函数。
目标是尽可能仔细地更新文档。 (仅将更改添加到修改器中)
更改的对象(可能是嵌套的)工作得很好。但我遇到阵列问题:
如果我使用数组[1,2,3,4]
并运行arr.splice(1,1)
,则数组如下所示:[1,3,4]
。这是正确的。
问题如下:
当我将[1,2,3,4]
与[1,3,4]
进行比较时,我的函数会更改索引1和2,然后删除第3个索引,因为它不再需要了。
生成的修饰符如下所示:
//document in collection
{
arr: [1,2,3,4]
}
//generated modifier
{
$set: {
'arr.1': 3,
'arr.2': 4
},
$push: {
$slice: 3
}
}
这会产生以下错误:
MongoError: Cannot update 'arr.1' and 'arr' at the same time
您是否有任何建议如何删除一个查询中的最后一个索引? 或者我有使用多个更新来存档吗?