将字符串转换为 objectid mongodb

Convert string to objectid mongodb

我有一个包含 800 个左右文档的集合,我想通过添加一个基于另一个字段的新字段从这个集合中创建一个新的文档,如下所示:

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

到目前为止我试过了,但我收到错误:无效的 onjectId:长度

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

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

感谢您的帮助!

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

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