首页 > 解决方案 > 将字符串转换为objectid mongodb

问题描述

我有 800 个 ish 文档的集合,我想通过添加一个基于另一个字段的新字段来从此集合中创建一个新文档,如下所示:

基本上,我的 foo_collection 文档包含一个已设置为字符串的字段,但是我想通过将其值“转换”为猫鼬 ID 来将其转换为新字段:

到目前为止,我尝试了这个,但我得到了错误:Invalid onjectId: Length

db.getCollection('foo_collection').aggregate([
{
    "$addFields ":{
        "bar" :  ObjectId("$bar_id")
    }
},
{"$out":"new_foo_collection"}
])

预期的结果是一个新的集合,其中的文档还有 1 个字段“bar”,值为 ObjectId()

谢谢你的帮助 !

标签: mongodbmongodb-queryaggregation-frameworkmongoid

解决方案


Mongodb 4.0引入了$toObjectId聚合来将字符串值转换为 ObjectId ......所以你可以使用这个

db.getCollection('foo_collection').aggregate([
  { "$addFields": {
    "bar" :  { "$toObjectId": "$bar_id" }
  }},
  { "$out": "new_foo_collection" }
])

推荐阅读