如何在MongoDB中使用通配符而使用更新 我想在mongo db中执行下面的操作,是否可以编写它。如何在使用更新时在MongoDB中使用通配符?
update emp set sal=sal*2 where ename like '%Pr%';
emp
是集名称
列:ename
,eno
,sal
如何在MongoDB中使用通配符而使用更新 我想在mongo db中执行下面的操作,是否可以编写它。如何在使用更新时在MongoDB中使用通配符?
update emp set sal=sal*2 where ename like '%Pr%';
emp
是集名称
列:ename
,eno
,sal
您可以使用正则表达式为你的通配符搜索,但你必须做更新客户端,因为MongoDB的在更新时无法访问另一个字段(或字段内容本身)的内容:
db.emp.find({ ename: /Pr/ }).forEach(function (x) {
x.sal = x.sal * 2;
db.emp.save(x);
});
在MongoDB 2.6中,您将可以使用新的$ mul操作符来更新服务器端。截至本帖发布时,2.6仍处于预发布阶段;你可以检查MongoDB download page的可用性。检查release notes以获取更改和新功能的完整列表。
另请注意,如果您知道您正在搜索的字符串位于字段的开头,则应该使用锚定的正则表达式查询,即以^开头的查询。锚定的正则表达式查询效率更高,因为它们可以使用索引并避免表扫描。
下面是这两个变化的查询:
db.emp.update({ename: /^Pr/}, {$mul: {sal: 2}}, {multi: true})