如何在聚合中使用_id?

时间:2018-07-26 12:37:55

标签: mongodb

我正在尝试获得这样的价位:name_5ab9c3da31c2ab715d421285

db.getCollection('name').aggregate([
      { 
          $project: 
          {
              newValue: { $concat: [  "name", "_", "$_id" ]} 
          }
    }
  ])

我收到此错误:$ concat仅支持字符串,不支持objectId

我尝试将"$_id"更改为ObjectId("$_id").str,但仍然是相同的错误。  我正在使用mongo 3.6,所以不能使用$ toString。任何想法如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

MongoDB 4.0引入了$ toString此功能。

用法(在您的情况下)

db.getCollection('name').aggregate([
      { 
          $project: 
          {
              _id: {
                  $toString: "$_id"
              }
              newValue: { $concat: [  "name", "_", "$_id" ]}
          }
    }
  ])

enter image description here

答案 1 :(得分:0)

您必须使用 ObjectId.toString()

Read more here.