programing

mongodb aggregate의 문자열 값으로 $projectObjectId는 어떻게 합니까?

golfzon 2023. 5. 9. 23:27
반응형

mongodb aggregate의 문자열 값으로 $projectObjectId는 어떻게 합니까?

응답에 ObjectId 대신 문자열을 가져오기 위해 집계 함수에서 사용할 수 있는 연산자가 있습니까?

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

Mongodb 4.0은 집계 연산자를 도입했습니다.이제 ObjectId를 문자열로 쉽게 변환할 수 있습니다.

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

또는 그 반대의 경우 집계를 사용합니다.

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

ObjectId에서 문자열을 가져올 직접 연산자가 집계 함수에 없습니다.

버전 2.6 이후에는ObjectId.toString()ObjectId를 문자열로 변환하는 메서드입니다.먼저 객체를 일치시키고 투영합니다.ID. 그런 다음 사용하여 이 개체 ID를 문자열로 변환할 수 있습니다.ObjectID.toString().

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

그런 다음 결과 개체를 사용하고 다음을 사용하여 문자열을 응답으로 가져옵니다.ObjectID.tostring()

편집: 다음을 사용하여 개체 ID의 str 속성에 액세스할 수 있습니다.

ObjectId("507f191e810c19729de860ea").str

출처: mongodb 문서

를 사용하여 인라인으로 수행할 수 있습니다.$concat연산자:

db.something.aggregate(
    [
        { $match :
            { 'property' :
                { $exists:true }
            }
        },
        { $project:
            { stringId:
                { $concat: [ ObjectId().str ] }
            }
        }
    ]
)

언급URL : https://stackoverflow.com/questions/36059986/how-to-project-objectid-to-string-value-in-mongodb-aggregate

반응형