programing

문서의 특정 부분 가져오기

jooyons 2023. 6. 19. 21:27
반응형

문서의 특정 부분 가져오기

제가 몽고드를 시도하고 있는데 문서의 특정 부분만 받는 것이 가능한지 궁금합니다.

예를 들어 다음과 같습니다.

{
  "name" : "MongoDB",
  "info" : { x : 203, y : 102 }
}

그리고 나는 오직 내용만을 원합니다.info.

내가 찾은 가장 가까운 것은db.collection.find({}, { info: 1 })하지만 이것은 나를 돌아옵니다.{ "info" : { x : 203, y : 102 } }필요할 때만{ x : 203, y : 102 }.

할 수 있습니다

db.collection.find({},{'info.x':1, 'info.y':1})

그러나 이는 투영에 있는 정보 개체의 모든 항목을 나열하는 것을 의미합니다. 이 항목은 원하는 항목이 될 수도 있고 아닐 수도 있습니다.

사용할 수 있습니다.distinct()다음과 유사한 함수:

db.collection.distinct("info", {info : {$exists : true}})

아니요, x/y 값만 반환할 수 없습니다. 필드를 제한하더라도 외부 구조는 계속 반환됩니다.

자세한 내용은 결과 투영을 참조하십시오.

  • 시작하는Mongo 4.2집계 연산자를 사용하여 문서를 다른 문서로 대체할 수 있습니다(이 경우 하위 연산자로 대체).

    // { name: "MongoDB", info: { x: 203, y: 102 } }
    db.collection.aggregate({ $replaceWith: "$info" })
    // { "x" : 203, "y" : 102 }
    
  • 에 앞서Mongo 4.2그리고 시작Mongo 3.4대신$replaceRoot 사용할 수 있습니다.$replaceWith:

    db.collection.aggregate({ $replaceRoot: { newRoot: "$info" } })
    

MongoDb 문서

이것을 읽으세요.

이 점에서.투영을 지정하지 않으면 find() 메서드는 쿼리와 일치하는 모든 문서의 모든 필드를 반환합니다.

집계 프레임워크를 사용할 수 있습니다.

  1. $match 단계(선택 사항)를 사용하여 결과를 필터링합니다.
  2. $프로젝트 단계에서 필드 선택

    db.getCollection('yourCollection').aggregate([ {$match:{_id:ObjectId("566fc97f5b79dff1a73ca2ae")}}, {$project:{_id:0, "x":"$info.x", "y":"$info.y"}} ])

언급URL : https://stackoverflow.com/questions/5301795/get-specific-part-of-document

반응형