出于某种原因,我需要通过修剪特定值来清理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。关于为什么我得到这些空值的任何想法?
答案 0 :(得分:1)
似乎错误是由于Robomongo。
直接在shell中执行脚本工作正常。
答案 1 :(得分:0)
对于其他任何人,以上面的示例为例,您需要在ID的末尾添加 toString 调用。
db.collection.find({"param1":{$regex: /^\s.*/}}).forEach(
function(doc){
var tid = doc._id;
print(tid.tostring());
})