我在mongodb中有四个文档。
// first document
{
"id": 1,
"exist": true
}
// second document
{
"id": 2,
"exist": false
}
// third document
{
"id": 3,
"exist": false
}
// forth document
{
"id": 4,
"exist": false
}
我想这样更新。这是因为只有一个文档可以具有真实的价值。
// first document
{
"id": 1,
"exist": false
}
// second document
{
"id": 2,
"exist": false
}
// third document
{
"id": 3,
"exist": true
}
// forth document
{
"id": 4,
"exist": false
}
如何在Node.js中使用猫鼬进行查询?非常感谢您阅读。 我只想通过一个查询而不是多个查询来解决这个问题。
答案 0 :(得分:1)
尝试一下,可以在一个DB调用中实现:
db.yourCollectionName.bulkWrite([
{
updateMany:
{
"filter": {},
"update": { $set: { "exist": false } }
}
},
{
updateOne:
{
"filter": { id: 4 },
"update": { $set: { "exist": true } }
}
}
])
或者您可以尝试一下,也许这可能会更快,因为它正在搜索过滤器,可能在索引上,尽管第一个查询并没有真正更新所有文档,而是必须进行全部扫描:
db.yourCollectionName.bulkWrite( [
{ updateMany :
{
"filter" : {"exist" : true},
"update" : {$set :{"exist" : false}}
}
},
{ updateOne :
{
"filter" : {id:4},
"update" : {$set :{"exist" : true}}
}
}
])
参考: .bulkWrite()