将字符串转换为对象ID mongodb

时间:2018-07-15 22:53:20

标签: mongodb mongodb-query aggregation-framework mongoid

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

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

到目前为止,我仍然尝试过此操作,但出现错误:无效的onjectId:长度

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

预期结果是一个包含文档的新集合,该文档的另一个“栏”字段的值为ObjectId()

感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

Mongodb 4.0 引入了$toObjectId聚合,可将字符串值转换为ObjectId ...因此您可以使用此

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