我正在查找一个名为Filter (myFilter=Filter.findById(id))的文档。我更新了一些字段,然后尝试使用myFilter.update()进行更新。什么都没发生。有效的方法是
myFilter.New=false;
myFilter.save()这是很好的,但随机导致竞争条件。我使用update是错误的吗?
下面是我的实现:
let myFilter = await Filter.findById(myUser.filterID);
if (!_.isUndefined(distance)) {
myFilter.searchParams.distance = distance;
}
if (!_.isUndefined(distanceMetric)) {
myFilter.searchParams.distanceMetric = distanceMetric;
}
await myFilter.update();发布于 2020-02-25 12:09:00
基于Mongoose Docs,Model.update()需要带两个参数(filter和doc)。
然而,在您的情况下,我建议您直接使用myFilter.save()它应该可以工作,而不需要设置myFilter.New=false
发布于 2020-02-25 12:14:12
您没有正确使用.update()。您需要提供文档的_id或其他索引作为查询,然后提供要更新的数据。.save()就是这里的方法。您可以在此处查找更新https://docs.mongodb.com/manual/reference/method/db.collection.update/
发布于 2020-02-25 12:18:33
我找到了另一个类似的问题。看起来我们应该使用findOneandUpdate :/
但我只想像上面那样有条件地设置cetain字段。如果不是这样的话,请告诉我。
这对我很有效:
await Filter.findByIdAndUpdate(myUser.filterID, {
$set: {
searchParams: {
...myFilter.searchParams
}
}
});https://stackoverflow.com/questions/60387327
复制相似问题