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