假设我知道要更新的文档的_id
值,但我希望只有当user
字段等于某个值时才更新它。这是正确的方法吗
collection.update({_ id:'1',user:'correct_user'},data)?
我是否需要为此任务创建一些其他索引?
答案 0 :(得分:2)
是的,它只会在_id
和user
匹配时才会更新。
由于您在完全唯一的完全_id
上匹配,因此user
上的索引不会真正改善查询,因为最终只有最多一个user
的值与之比较。
> collection.find({_id: '1', user: 'correct user'}).explain()
{
"cursor" : "BtreeCursor _id_",
"isMultiKey" : false,
"n" : 1,
"nscannedObjects" : 1, // Only a single object is scanned
"nscanned" : 1,
"nscannedObjectsAllPlans" : 1,
"nscannedAllPlans" : 1,
...