我想对我的MongoDB执行查询,以查找与_id
之一myCars
匹配的汽车文档。假设我想对该文档执行一些更新,我想在一个查询中执行此操作。但我真的想确保汽车文件在执行更新之前也与我的汽车color
匹配。有没有办法在单个查询中执行此操作?
const myCars = [
{ _id: "abc", color: "Red" },
{ _id: "def", color: "Blue" },
];
Car.findOneAndUpdate({
_id: {
$in: myCars.map(car => car._id),
},
color: myCars -->[?]<--.color, // the car that matched the $in operator
}, {...});
我不确定这个问题的关键字是什么,但是当我清楚一点时,我会确保更新标题!
答案 0 :(得分:0)
您可以尝试[$or][1]
查询,该查询将使用与myCars
数组中的每个汽车匹配的表达式列表。假设myCars
是仅包含_id
和color
字段的对象数组:
Car.findOneAndUpdate({$or: myCars})
通过
仔细检查我的假设 使用$or
的Imho通常是一个很好的指标,可以在其他地方进行一些重构,因此您也可能尝试从新的角度处理您的特定问题。特别是如果myCars
数组很大或者您的数据集非常大。根据{{3}},如果两个字段都被编入索引,则“或查询”可以执行索引扫描。