복붙노트

[MONGODB] 어떻게 $ 프로젝트는 MongoDB의 집계에 문자열 값 OBJECTID?

MONGODB

어떻게 $ 프로젝트는 MongoDB의 집계에 문자열 값 OBJECTID?

내가 응답 대신 ObjectId가의 문자열을 얻을 집계 함수에서 사용할 수있는 연산자가 있습니까?

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

해결법

  1. ==============================

    1.MongoDB를 4.0 $의 toString 집계 연산자를 출시했다. 그래서, 지금 당신은 쉽게 문자열로 ObjectId가 변환 할 수 있습니다

    MongoDB를 4.0 $의 toString 집계 연산자를 출시했다. 그래서, 지금 당신은 쉽게 문자열로 ObjectId가 변환 할 수 있습니다

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

    또는 사용 반대 반대 $ toObjectId 집계

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

    2.직접 운영자는 ObjectId가에서 문자열을 얻을 집계 함수에 없습니다.

    직접 운영자는 ObjectId가에서 문자열을 얻을 집계 함수에 없습니다.

    버전 2.6 이후 당신은 문자열에 ObjectId가 변환 ObjectId.toString () 메소드를 사용할 수 있습니다. 먼저 일치하고 OBJECTID 전망이다. 그런 다음 ObjectID.toString를 사용하여 문자열이 개체 ID를 변환 할 수 있습니다 ().

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

    그리고) (개체 결과 사용 ObjectID.tostring를 사용하여 응답으로 문자열을 얻을

    편집 : 당신은 사용하여 개체 ID의 STR 속성에 액세스 할 수 있습니다

    ObjectId가 ( "507f191e810c19729de860ea"). STR

    출처 : MongoDB를 워드 프로세서

  3. ==============================

    3.당신은 $의 CONCAT 연산자를 사용하여 인라인 그것을 할 수 있습니다 :

    당신은 $의 CONCAT 연산자를 사용하여 인라인 그것을 할 수 있습니다 :

    db.something.aggregate(
        [
            { $match :
                { 'property' :
                    { $exists:true }
                }
            },
            { $project:
                { stringId:
                    { $concat: [ ObjectId().str ] }
                }
            }
        ]
    )
    
  4. from https://stackoverflow.com/questions/36059986/how-to-project-objectid-to-string-value-in-mongodb-aggregate by cc-by-sa and MIT license