mongo是否具有
的等价物update emp
set sal = sal * 1.20
where empno in (1,2,3);
请注意,我想要匹配的记录sal。
db.users.update(
{ empno: { $in: [1,2,3]} },
{ $set: { sal: $matched.sal * 1.20 } }, # Not real syntax
{ multi: true }
)
我查看了文档但找不到任何内容。我可以使用find-save来完成它,但我正在处理大型集合,多次更新将是一个更理想的解决方案。
答案 0 :(得分:1)
在mongo shell中没有multiply元素这样的函数。很少有field update个运算符,但在您的情况下,您需要运行自定义forEach
脚本:
db.users.find({ empno: { $in: [1,2,3]} }).forEach(function(e) {
e.sal = e.sal * 1.2;
db.users.save(e);
});
答案 1 :(得分:1)
不幸的是,MongoDB无法做到这一点。您可以使用$where
运算符获得关闭,但引用specifically warns反对更新$where
的文档。所以,是的,您必须逐个获取文档并单独执行更新。