this._MyModel.findOneAndUpdate(
{ email },
{
$set: {
'tradeAccount': {
limitType,
limit,
}
},
$push: {
'tradeAccount.history': history
}
}
);
我想使用$push
将另一个对象添加到现有数组中,但是与此同时,我正在使用$set
对同一对象执行另一个更新。
我知道我不能在同一字段(例如{$set
和$push
)上使用两个运算符。
我想知道是否存在使用$set
将另一个对象添加到现有数组中的另一种方法,或者在同一更新请求中是否还有其他方法可以这样做。
我当时正在考虑通过检索现有历史记录并与新记录合并来使用$set
更新数组。但这需要对数据库的额外调用。
答案 0 :(得分:1)
您可以使用
this._MyModel.findOneAndUpdate(
{ email },
{
$set: {
'tradeAccount'.'limitType': limitType,
'tradeAccount'.'limit': limit
},
$push: {
'tradeAccount.history': history
}
}
);
这应该更新limitType和limit字段,然后推入历史记录。您不会以这种方式在同一字段上执行多个查询,因为您没有直接对'tradeAccount'做任何事情。