无效的ObjectID长度MongoDB

时间:2017-09-05 12:27:30

标签: mongodb

当我尝试将数据类型字符串更新为ObjectId(mongodb 3.2.12版本)时,我收到错误Invalid ObjectID length并将一半数据转换为ObjectID。我怎样才能摆脱这个错误?我有25k数据需要更新。

db.booking.find({user: {$exists:true}}).forEach( function(x) {
    x.user = ObjectId(x.user);
    db.booking.update({_id: x._id}, {$set: {user: x.user}});
});

1 个答案:

答案 0 :(得分:1)

错误表明数据实际上对 ObjectId 无效,或者至少部分数据有效。如果您认为可以,则可以通过向查询添加$where来彻底清除无效长度条目。find({ user: { $exists: true }, $where: 'this.user.length === 24' })然后处理任何不符合所需的十六进制字符串长度要求的内容。单独的问题。最重要的是,您需要单独查看一些不良数据