mongo的新手,我正在努力编写带有多个where子句的更新mongo查询
让我们说我有一个雇员名单
name |emp_id | old phone number | new phone number
Steve |123 | 123-456-7896 | 801-123-4567
John |456 | 123-654-9878 | 702-123-4567
Steve |789 | 789-123-7890 | 504-123-4567
我想写一个本质上说的mongo查询
更新为名称和emp_id都匹配的新电话号码。该文档有大约200个条目。
答案 0 :(得分:0)
由于您要更新多个整体,因此可以这样:
当您说自己有一个列表时-考虑将其放在文件中或要通过代码处理的位置,然后尝试将数据读入数组:
/etc/sudoers.tmp
因此,在这里,我们考虑将let dataArray = [{name: Steve, emp_id: 123, new_phone_number :801-123-4567},{name: John, emp_id: 456, new_phone_number :702-123-4567},....]
db.getCollection('YourCollection').bulkWrite(
dataArray.map((each) =>
({
updateOne: {
filter: { 'name': each.name, 'emp_id': each.emp_id },
update: { $set: { phone_number: each.new_phone_number } }
}
})
)
)
作为您要更新的字段,我们没有考虑在文档中保留old_phone_number和new_phone_number两个字段。
或者,如果您想在文档中包含两个电话号码,则:
phone_number
如上所述-我们正在向所有匹配的文档中注入一个新字段db.getCollection('YourCollection').bulkWrite(
dataArray.map((each) =>
({
updateOne: {
filter: { 'name': each.name, 'emp_id': each.emp_id },
update: { $set: { new_phone_number: each.new_phone_number } }
}
})
)
)
,最终结果将在字段new_phone_number
中使用旧电话号码,在字段{{1中也使用新电话号码}}。
同样,您没有提到任何特别之处,如果您确实确实需要单独更新每个记录以进行多个数据库调用,那么通常可以使用phone_number
或new_phone_number
或.update()
{ {1}}取决于您的要求/兴趣。
答案 1 :(得分:-1)
默认情况下,MongoDB $update方法更新单个记录。但是,如果要更新多个符合条件的文档,则可以使用Multi参数(将其设置为true)。
void use(struct Vec3 *restrict uninit out);