如何在使用Update时在MongoDB中使用wild字符 我想在下面做mongo db就可以写它了。
update emp set sal=sal*2 where ename like '%Pr%';
emp
是集合名称
列:ename
,eno
,sal
答案 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})