我正在找到一个名为Filter的文档(myFilter = Filter.findById(id))。我更新了一些字段,然后尝试使用myFilter.update()更新。 没发生什么事。 起作用的是
myFilter.New=false;
myFilter.save()
这很好,但是会随机导致比赛情况。我使用的更新错误吗?
这是我的实现方式
let myFilter = await Filter.findById(myUser.filterID);
if (!_.isUndefined(distance)) {
myFilter.searchParams.distance = distance;
}
if (!_.isUndefined(distanceMetric)) {
myFilter.searchParams.distanceMetric = distanceMetric;
}
await myFilter.update();
答案 0 :(得分:0)
基于Mongoose Docs,Model.update()
应该采用2个参数(filter
和doc
)。
但是,根据您的情况,我建议您直接使用myFilter.save()
即可,而无需设置myFilter.New=false
答案 1 :(得分:0)
您没有正确使用.update()。您需要提供_id或文档的其他索引作为查询,然后提供要更新的数据。 .save()将是这里的方法。 您可以在这里https://docs.mongodb.com/manual/reference/method/db.collection.update/
查找更新答案 2 :(得分:0)
我找到了另一个类似的问题。似乎要使用的方法是使用findOneandUpdate:/
但是我只想有条件地设置上面的某些字段。如果那不是要走的路,请告诉我。
这对我有用:
await Filter.findByIdAndUpdate(myUser.filterID, {
$set: {
searchParams: {
...myFilter.searchParams
}
}
});
答案 3 :(得分:0)
尝试此查询
let searchParams={}
if (!_.isUndefined(distance)) {
searchParams.distance = distance;
}
if (!_.isUndefined(distanceMetric)) {
searchParams.distanceMetric = distanceMetric;
}
await Filter.update({_id: myUser.filterID},{$set:{searchParams}}