MongoDB:打印文档ID时返回空字段

时间:2017-05-05 07:43:59

标签: mongodb

出于某种原因,我需要通过修剪特定值来清理MongoDB中的数据。

为此,我按以下方式处理:

db.collection.find({"param1":{$regex: /^\s.*/}}).forEach(
    function(doc){
    tmp = doc["param1"].trim()
    db.collection.update({"_id": doc._id}, {"$set":{ "param1":tmp}});
    })

从那里,我收到一个错误。现在我做:

db.collection.find({"param1":{$regex: /^\s.*/}}).forEach(
    function(doc){
    var tid = doc._id;
    print(tid);
    })

返回空字段:

>/* 1 */
>{}
>/* 2 */
>{}
>/* 3 */
>{}
>/* 4 */
>{}

所以我猜之前的错误来自更新没有找到id。关于为什么我得到这些空值的任何想法?

2 个答案:

答案 0 :(得分:1)

似乎错误是由于Robomongo。

直接在shell中执行脚本工作正常。

答案 1 :(得分:0)

对于其他任何人,以上面的示例为例,您需要在ID的末尾添加 toString 调用。

db.collection.find({"param1":{$regex: /^\s.*/}}).forEach(
    function(doc){
    var tid = doc._id;
    print(tid.tostring());
})