将字符串字段转换为ObjectId,错误:$ convert中不支持从对象到objectId的转换,没有onError值

时间:2019-12-17 08:08:52

标签: mongodb mongodb-query

我的某些文档中有一些字段应该是ObjectId,但是是字符串。

所以我需要一个mongo脚本来将所有这些字符串字段转换为ObjectId。

我的收藏集:

[
  {
    "_id": ObjectId("5dcaafcaeaec3701a2774d48"),

    "cover_id": ObjectId("5dcaafcceaec3701a2774d4b")
  },
  {
    "_id": ObjectId("5dcaafe2eaec3701a2774d72"),

    "cover_id": "5dcaafcfeaec3701a2774d51"
  }
]

我当前的mongo脚本是:

var bulk = db.product2.initializeUnorderedBulkOp();

bulk.find({}).update([
    {
        $set: {
            cover_id: {
                $cond: {
                    if: {  $type: "string" } ,
                    then: {$convert: { input: "$cover_id", to: "objectId" }},
                    else: "$a"
                }
            }
        }
    }
]);

bulk.execute();

但我遇到此错误:

  

“代码”:241,“ errmsg”:“在$ convert中不支持从onObject到objectId的转换,没有onError值”

0 个答案:

没有答案