mongodb - 将字符串转换为objectid mongodb

标签 mongodb mongodb-query aggregation-framework mongoid

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

基本上,我的 foo_collection 文档包含一个已设置为字符串的字段,但我想通过将其值“转换”为 Mongoose 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" }
])

关于mongodb - 将字符串转换为objectid mongodb,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51352786/

相关文章:

mongodb - 使用 mongoimport 时如何为空 CSV 字段设置默认值

javascript - 如何在 MongoDB 中使用集合?

javascript - MongoDB - 查找一组文档之间的共同值计数

mongodb - 聚合 : Counting Items Per Hour

MongoDB:搜索查询以返回数组内的对象

node.js - 在 Mocha 测试中,一半的时间都不会创建 Mongoose 索引

database - 使用mgo golang mongodb动态插入多个文档

windows - MongoDB 作为 Windows 上的纯内存数据库?

javascript - MongoDB - 查询数组的最后一个对象?

javascript - Mongoose 聚合不排序日期