无效的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
条件。非常感谢。成功了!!!