aggregate函数中是否有一个运算符可以用来获取字符串而不是ObjectId作为响应?

db.something.aggregate([
  { "$match": { "property": { "$exists": true } } },
  { "$project": { "stringId": "$_id.???" } }
])

推荐答案

Mongodb 4.0引入了$toString聚合操作符.现在,您可以轻松地将ObjectId转换为字符串

db.collection.aggregate([
  {
    $project: {
      _id: {
        $toString: "$_id"
      }
    }
  }
])

反之亦然,使用$toObjectId聚合

db.collection.aggregate([
  {
    $project: {
      _id: {
        $toObjectId: "$_id"
      }
    }
  }
])

Mongodb相关问答推荐

MongoDB聚合如何对对象数组中的值求和

MongoDB对两个串联数组进行排序

Golang中的Mongo中值运算

MongoDB 聚合 groupBy 日期并计算子文档

MongoDB:嵌套数组计数+原始文档

$eq 的目的是什么

替换 MongoDB 中数组中的嵌入文档

使用 mgo 从 golang 中的 Mongodb 中 Select 列

使用 EventSourcing(NodeJS、MongoDB、JSON)跨多个偶尔连接的客户端同步数据

MongoDB 是否重用已删除的空间?

Mongoose $push 不断添加两个条目

MongoDB 的 BinData(0, "e8MEnzZoFyMmD7WSHdNrFJyEk8M=") 中的0是什么意思?

NoSql 参考数据

如何返回 MongoDB 中文档的 ObjectId 或 _id?和错误$in 需要一个数组

Mongodb 类型引用 node

是否有支持 MongoDB 和 Devise 的 Rails 管理界面?

使用自定义 _id 值时 mongodb 中的 Upserts

如何在 golang 和 mongodb 中通过 id 查找

MongoDb 连接被拒绝

mongoose中的 Date.now() 和 Date.now 有什么区别?