为什么在MongoDB中以编程方式运行此代码是错误的

时间:2014-09-19 03:20:09

标签: mongodb-query

db.runCommand({"group" :{
    "ns" : "keyword_logs",
    "key" : "keyword",
    "initial" : {"keyword" : {}},
    "$reduce" : function (doc , prev) {
        if(doc.keyword != null && prev.keyword != null &&(doc.keyword in prev.keyword)) {
             prev.keyword[doc.keyword]++;
        }
        else {
             prev.keyword[doc.keyword] = 1 ;
        }
     },
     "condition" : {"domain" : 40}
}})

这是errorMsg

{
"errmsg" : "exception: JavaScript property (name) contains a null char which is not allowed in BSON. {}",
"code" : 16985,
"ok" : 0
}

1 个答案:

答案 0 :(得分:0)

感谢Gibert Sun,在他的帮助下,我们发现错误: 这是查找错误数据的代码

db.runCommand({
        "group" :{
            "ns" : "keyword_logs",
            "key" : "keyword",
            "initial" : {"error" : []},
            "$reduce" : function (doc , prev) {
                if (/\u0000/.test(doc.keyword)) prev.error.push(doc);
            },
            "condition" : {"domain" : 10}
        }
    })

db.runCommand({ "group" :{ "ns" : "keyword_logs", "key" : "keyword", "initial" : {"error" : []}, "$reduce" : function (doc , prev) { if (/\u0000/.test(doc.keyword)) prev.error.push(doc); }, "condition" : {"domain" : 10} } }) 这是搜索的新代码

db.runCommand({
    "group" :{
        "ns" : "keyword_logs",
        "key" : "keyword",
        "initial" : {"keyword" : {}},
        "$reduce" : function (doc , prev) {
            if (/\u0000/.test(doc.keyword)) return;
            var kw = doc.keyword;
            if(kw in prev.keyword){
                prev.keyword[doc.keyword]++;
            }else{
                prev.keyword[doc.keyword] = 1 ;
            }
        },
        "condition" : {"domain" : 10}
    }
})