如何将整个mongodb集合中的特定字段从String转换为ObjectId



"产品"集合在我的MongoDB中提到如下:

{
    "_id" : ObjectId("5a67755082edf74a06fc92c9"),
    "productName" : "Printer", 
    "productId" : "5a677550d3a2246da136f294"
},
{
    "_id" : ObjectId("6a67755082edf74a06fc92cd"),
    "productName" : "Scanner", 
    "productId" : "5a688550d3a2246da136f297"
}

现在,我正在尝试将整个产品集合中的 productId 字段的值从字符串更新为 ObjectId。因此,输出应如下所示:

{
    "_id" : ObjectId("5a67755082edf74a06fc92c9"),
    "productName" : "Printer", 
    "productId" : ObjectId("5a677550d3a2246da136f294")
},
{
    "_id" : ObjectId("6a67755082edf74a06fc92cd"),
    "productName" : "Scanner", 
    "productId" : ObjectId("5a688550d3a2246da136f297")
}

我尝试使用以下查询

db.products.find().forEach( function(myDoc) { db.products.update("productId", {$set:{"productId":  ObjectId(myDoc.productId)}})} );

但是,我面临以下错误:

E QUERY    [thread1] Error: invalid object id: length :

任何人都可以帮助我解决这个问题...

E 查询 [线程 1] 错误:对象 ID 无效:长度 :

当您的productId字段null、缺失或不是有效的类似 ObjectId 的字符串(24 个十六进制数字(时,就会发生这种情况。

最新更新