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

如何在整个mongodb集合中将特定字段从String转换为ObjectId?,mongodb,Mongodb,我的mongodb中的产品集合如下: { "_id" : ObjectId("5a67755082edf74a06fc92c9"), "productName" : "Printer", "productId" : "5a677550d3a2246da136f294" }, { "_id" : ObjectId("6a67755082edf74a06fc92cd"), "productName" : "Scanner", "productId"

我的mongodb中的产品集合如下:

{
    "_id" : ObjectId("5a67755082edf74a06fc92c9"),
    "productName" : "Printer", 
    "productId" : "5a677550d3a2246da136f294"
},
{
    "_id" : ObjectId("6a67755082edf74a06fc92cd"),
    "productName" : "Scanner", 
    "productId" : "5a688550d3a2246da136f297"
}
现在,我试图在整个产品集合中将productId字段的值从String更新为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查询[thread1]错误:无效的对象id:长度:

当productId字段为空、缺少或不是有效的ObjectId(如字符串24个十六进制数字)时,会发生这种情况