2017-09-05 147 views
0

當我試圖將數據類型字符串更新爲ObjectId(mongodb 3.2.12版本)時,我得到了錯誤Invalid ObjectID length,它將一半數據轉換爲ObjectID。我怎樣才能擺脫這個錯誤?我有25k數據要更新。無效的ObjectID長度MongoDB

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

該錯誤表明數據實際上並不是有效的'ObjectId',或者至少有一部分是。如果您認爲沒問題,您可以通過在查詢中添加'$ where'來查找無效的長度條目。「(用戶:{$ exists:true},$其中:'this.user.length === 24'})'然後處理任何不符合所需的十六進制字符串的長度要求作爲單獨的問題。底線是你有一些不好的數據,你需要單獨看看。 –

+0

我可以在相同的查詢條件下使用它嗎?你能否給我完整的查詢。對不起,我沒有太多的經驗在mongo – Divya

+0

這是完整的查詢。看到它既有'存在'的現有條件,也有'$ where'條件。 –

回答

0

錯誤提示數據實際上不適用於ObjectId,或者至少有一部分是。如果您認爲沒問題,您可以通過在查詢中添加$ where來查找無效長度條目.find({user:{$ exists:true},$ where:'this.user.length === 24'} )然後處理任何不符合所需的十六進制字符串的長度要求作爲單獨的問題。底線是你有一些不好的數據,你需要分別看看