【问题标题】:How to convert a particular field from String to ObjectId in an entire collection of mongodb?如何在整个 mongodb 集合中将特定字段从 String 转换为 ObjectId?
【发布时间】:2018-01-31 01:17:09
【问题描述】:

我的mongodb中的“products”集合如下:

{
    "_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 :

谁能帮我解决这个问题...

【问题讨论】:

    标签: mongodb


    【解决方案1】:

    E QUERY [thread1] 错误:无效的对象 id:长度:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-09-19
      • 1970-01-01
      • 2017-08-29
      • 1970-01-01
      • 1970-01-01
      • 2022-01-02
      • 2021-09-07
      • 1970-01-01
      相关资源
      最近更新 更多