code

mongo 집계 쿼리에서 $project를 사용하여 필드를 최상위 문서로 반환할 수 있습니까?

starcafe 2023. 6. 27. 22:26
반응형

mongo 집계 쿼리에서 $project를 사용하여 필드를 최상위 문서로 반환할 수 있습니까?

다음과 유사한 문서가 있으며, 결과 배열에서 현재 최상위 문서의 필드를 최상위 문서로 반환합니다.

{ 
  field1:{contents:{}}
  field2:{othercontent:{}}
}

집계 쿼리 결과에서 다음을 반환합니다.

{
  contents:{}
}

$project와 Aggregation Framework로 이 작업을 수행할 수 있습니까?

예, 사용할 수 있습니다.$project그러기 위해서는.당신은 단지 그것에게 중첩된 것을 회수하라고 말하면 됩니다.contents 표기법을 사용한 객체:

db.items.aggregate( {$project: {contents:'$field1.contents'}} );

또한, 당신이 숨기려는 경우_id출력의 필드를 지정할 수 있습니다._id: 0에서$project매개 변수:

db.items.aggregate( {$project: {contents:'$field1.contents', _id:0}} );
  • 시작하는Mongo 3.4집계 연산자를 사용하여 문서를 다른 문서로 대체할 수 있습니다(이 경우 하위 연산자로 대체).

    // { field1: { content: { a: 1, b: 2 } }, field2: { othercontent: {} } }
    // { field1: { content: { c: 1, d: 2 } }, field2: { othercontent: {} } }
    db.collection.aggregate({ $replaceRoot: { newRoot: "$field1" } })
    // { content: { a: 1, b: 2 } }
    // { content: { c: 1, d: 2 } }
    
  • 시작하는Mongo 4.2연산자를 사용할 수도 있습니다.

    db.collection.aggregate({ $replaceWith: "$field1" })
    

언급URL : https://stackoverflow.com/questions/19434237/can-i-use-project-to-return-a-field-as-the-top-level-document-in-a-mongo-aggreg

반응형