使用Update时如何在MongoDB中使用wild字符?

时间:2014-02-20 16:17:09

标签: mongodb

如何在使用Update时在MongoDB中使用wild字符 我想在下面做mongo db就可以写它了。

update emp set sal=sal*2 where ename like '%Pr%';

emp是集合名称

列:enameenosal

2 个答案:

答案 0 :(得分:1)

您可以使用正则表达式进行通配符搜索,但是您必须在客户端进行更新,因为mongoDB在更新时无法访问其他字段(或字段内容本身)的内容:

db.emp.find( { ename: /Pr/ } ).forEach( function (x) {   
    x.sal = x.sal * 2; 
    db.emp.save( x );
});

答案 1 :(得分:0)

在MongoDB 2.6中,您将能够使用新的$ mul运算符在服务器端进行更新。截至本文发布时,2.6仍处于预先发布状态;您可以查看MongoDB download page的可用性。查看release notes以获取更改和新功能的完整列表。

另请注意,如果您知道要搜索的字符串位于字段的开头,则应使用锚定的正则表达式查询,即以^开头的查询。锚定的正则表达式查询更有效,因为它们可以使用索引并避免表扫描。

以下是包含这两项更改的查询:

db.emp.update({ename: /^Pr/}, {$mul: {sal: 2}}, {multi: true})