1

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 来做到这一点,但我正在处理一个大型集合,并且多重更新将是一个更理想的解决方案。

4

2 回答 2

1

不幸的是,这对于 MongoDB 是不可能的。您可以获得的关闭是使用$where操作员,但参考特别警告不要从$where. 所以,是的,您将必须一个一个地获取文档并单独执行更新。

于 2013-08-20T10:34:18.787 回答
1

在 mongo shell 中没有像乘元素这样的功能。字段更新运算符很少,但在您的情况下,您需要运行自定义forEach脚本:

db.users.find({ empno: { $in: [1,2,3]} }).forEach(function(e) {
    e.sal = e.sal * 1.2;
    db.users.save(e);
});
于 2013-08-20T10:20:45.563 回答