Node.js 在mongo中,有没有一种方法可以同时使用update$setOnInsert和$max?
我正在尝试编写一个更新,如果一个对象不存在,它会将该对象设置为一个键的值。如果确实存在,我只想在新值大于现有值时更新特定字段 下面是我尝试做的一个例子:Node.js 在mongo中,有没有一种方法可以同时使用update$setOnInsert和$max?,node.js,mongodb,Node.js,Mongodb,我正在尝试编写一个更新,如果一个对象不存在,它会将该对象设置为一个键的值。如果确实存在,我只想在新值大于现有值时更新特定字段 下面是我尝试做的一个例子: ... updateOne: { filter: { _id: name, }, update: { $setOnInsert: { _id: name, value:
...
updateOne: {
filter: {
_id: name,
},
update: {
$setOnInsert: {
_id: name,
value: { ace: true, bay: uniqueID },
},
$max: {
'value.bay': uniqueID,
},
},
upsert: true,
},
...
其中name
和uniqueID
都是发送到函数的参数
如果\u id:name
还不存在,我想添加我的$setOnInsert
指定的对象
如果\u id:name
存在,我想用新的uniqueID
更新value.bay
字段,前提是新值更大。由我的$max
指定
如果\u id:name
存在,并且新的uniqueID
不大于以前的现有uniqueID
,则我不希望发生任何更改
我想知道这种类型的操作是否可以在单个查询中实现。感谢您的帮助
另外,我目前面临的问题是,如果\u id:name
不存在,那么我在上面的查询中会出现以下错误:
无法同时更新“value”和“value.bay”
该错误使我认为不可能在单个查询中执行此操作:/
编辑:
我还为$setOnInsert
尝试了以下操作:
$setOnInsert: {
_id: name,
value: { ace: true },
}
考虑到可能我可以在对象中设置另一个值,该值不受使用
$max
相关问题更新的字段的影响:本期中的示例有效,但正如海报所述,由于需要指定对象字段,因此并不理想。如果没有其他方法,我可以这样做。没有其他方法,谢谢@AlexBlexRelated问题:本期中的示例有效,但正如海报所述,由于需要指定对象字段,因此并不理想。如果没有其他方法,我可以这样做。没有其他方法,谢谢@AlexBlex