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