无效的ObjectID长度MongoDB

无效的ObjectID长度MongoDB,mongodb,Mongodb,当我尝试将数据类型字符串更新为ObjectId(mongodb 3.2.12版本)时,我得到了错误无效的ObjectId长度,它将一半的数据转换为ObjectId。我怎样才能消除这个错误?我有25k的数据要更新 db.booking.find({user: {$exists:true}}).forEach( function(x) { x.user = ObjectId(x.user); db.booking.update({_id: x._id}, {$set: {user:

当我尝试将数据类型字符串更新为
ObjectId
(mongodb 3.2.12版本)时,我得到了错误
无效的ObjectId长度
,它将一半的数据转换为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}});
});

该错误表明该数据对于对象ID实际上无效,或者至少部分数据是有效的。如果您认为没有问题,您可以通过向查询中添加
$where
来删除无效的长度条目。
查找({user:{$exists:true},$where:'this.user.length==24'})
,然后处理任何不满足十六进制字符串长度要求的内容。底线是您有一些不好的数据需要单独查看

错误表明该数据对于
ObjectId
实际上无效,或者至少有一部分是有效的。如果您认为没有问题,您可以通过向查询添加
$where
来删除无效的长度条目。查找({user:{$exists:true},$where:'this.user.length==24'}),然后处理任何不满足十六进制字符串长度要求的内容。底线是你有一些不好的数据需要单独查看。我可以用这个where条件来处理同样的查询吗。你能给我完整的问题吗。对不起,我没有太多的经验,在蒙哥华是完整的查询。请看,它既有
$exists
的现有条件,也有
$where
条件。非常感谢。成功了!!!