首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MongoDB更新查询无法工作

MongoDB更新查询无法工作
EN

Stack Overflow用户
提问于 2013-09-19 15:09:21
回答 1查看 3K关注 0票数 0

我正在运行下面的查询,它不工作。当我在mongo中运行查询部分时,它会返回我预期的结果。我正在使用UMongo。但是它没有按预期更新文档。

代码语言:javascript
复制
db.system.js.save ({    
_id:"script_1",
value: function() {

    print("in function>>");             

    db.data.find({"$and": 
        [{"title":{$regex : '.*Green Red.*', $options : 's'}},
         {"editor.key": {"$in": ["74014","45339"]}}, {"types" : {"$in": ["Notes"]}}]}).forEach(
          function(docMatch){
                  print("Matching document found");
                      db.data.update(docMatch, 
                              {$set:{"editor.key": "05335","editor.value": "editor1", 
                          "editor.email": "editor1@gmail.com"}
                    }, false, true);
      }
    );

    db.data.reIndex();
    }
 });

 db.eval("script_1()");  

我确实在mongo日志中看到了“找到的匹配文档”,但没有更新。下面的消息也显示在日志中。

代码语言:javascript
复制
     Thu Sep 19 11:03:43 [conn1279] warning: ClientCursor::yield can't unlock b/c of recursive lock ns             

谢谢你的帮助!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-09-19 16:38:44

如果没有您的数据和能够运行您的查询,我就不知道到底是什么问题。但是,这个代码有很多问题:

  • 为什么要将其保存为脚本,然后调用db.eval()而不是直接运行更新?
  • 你为什么需要重新索引?
  • 查询中不需要$and运算符。
  • 您不需要单独的调用来查找和更新;实际上,使用多更新标志设置为true的一个更新调用就足够了。
  • $in在{"$in":"Notes"}中是不必要的。
  • 使用{$regex:'.Green红色。‘}可能会很慢。在这种情况下,$regex运算符不能使用索引,因为索引只能用于匹配前缀。参见这里的最后一段:http://docs.mongodb.org/manual/reference/operator/regex/

如果这是UMongo生成的代码,我建议离开UMongo,使用官方支持的mongo。

为了修复对更新的调用,尝试在mongo中运行类似的命令:

代码语言:javascript
复制
db.data.update(
  {
    "title": {$regex : '.*Green Red.*', $options : 's'},
    "editor.key": {"$in": ["74014","45339"]},
    "types" : "Notes"
  },
  {
    $set: {
            "editor.key": "05335",
            "editor.value": "editor1",
            "editor.email": "editor1@gmail.com"
          }
  },
  false,
  true
);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18898431

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档