하위 배열의 다른 컬렉션에있는 속성을 어떻게 호출 할 수 있습니까?

yavg

나는이 컬렉션이 있습니다 전화를 places하고 type_places. a place는 장소 유형 ( type_places)과 연관되어 있으며 this ( objects배열)의 일부 객체와 연관 될 수 있습니다 .

type_places
{
  "_id": "5fbc7cc705253c2da482023f",
  "type_place": "office",
  "objects": [
    {
      "_id": "5fbc7cc705253c2da48202saw",
      "name": "chair"
    },
    {
      "_id": "5fbc7cc705253c2da4820242",
      "name": "table"
    },
    {
      "_id": "5fbc7cc705253c2da482025f",
      "name": "desktop"
    }
  ]
}

places
{
    "_id": "5fbc7cc705253c2da482025f",
    "place": "Room 5",
    "type_place_id": "5fbc7cc705253c2da482023f", /*"office"*/
    "type_place_objects": [
      {
        "_id": "5fbc7cc705253c2da48202saw", /*chair*/
        "quantify": 4
      },
      {
        "_id": "5fbc7cc705253c2da482025f", /*desktop*/
        "quantify": 2
      }
    ]
  }

나는 내가 쿼리 할 때 것을 원하는 place쿼리 나 쇼 place, 어떤 장소의 그것이 제가 상담을하고 있다는 점이다 ( type_place) 어떤 objects장소의 유형을가있다

원하는 출력 :

{
  "_id": "5fbc7cc705253c2da482023f",
  "place": "Room 5",
  "type_place_objects": [
    {
      "_id": "5fbc7cc705253c2da48202saw",
      "name": "chair",
      "quantify": 4
    },
    {
      "_id": "5fbc7cc705253c2da482025f",
      "name": "desktop",
      "quantify": 2
    }
  ]
}

나는 이것을 시도하고 있지만 작동하지 않습니다.

place.aggregate(
[
  {
    "$match": {"place":"Room 5"}
  },

  {
    "$lookup": {
      "from": "type_place",
      "localField": "type_place_id",
      "foreignField": "_id",
      "as": "type_place_objects"
    }
  },
  {
    "$sort": {
      "_id": -1
    }
  },
  {
    "$project": {
      "_id":1,
      "place":1,
      "type_place_objects": 1
    }
  }
  
])

어떻게 고칠 수 있습니까?

확실한

여러 가지 방법이있을 수 있습니다. 한 가지 방법은 $lookup이미 시도한대로 사용 하는 것입니다.

db.place.aggregate([
  { "$match": { "place": "Room 5" } },
  { $unwind: "$type_place_objects"  },
  {
    "$lookup": {
      "from": "type_place",
      "let": { tpo: "$type_place_objects._id" },
      "pipeline": [
        { $unwind: "$objects" },
        {
          $match: {
            $expr: {
              $eq: [ "$objects._id", "$$tpo" ]
            }
          }
        }
      ],
      "as": "join"
    }
  },
  {
    $addFields: {
      "join": { "$arrayElemAt": [ "$join", 0]
      }
    }
  },
  {
    $addFields: { "type_place_objects.name": "$join.objects.name" }
  },
  {
    $group: {
      _id: "$_id",
      place: { $first: "$place" },
      type_place_objects: { "$addToSet": "$type_place_objects" }
    }
  }
])

일하는 몽고 놀이터

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Django에서 동일한 모델의 다른 속성을 어떻게 호출 / 참조 할 수 있습니까?

분류에서Dev

VB 2008에서 하나의 하위 프로 시저가 다른 호출에서 구조의 다른 배열을 어떻게 받아 들일 수 있습니까?

분류에서Dev

datetime 속성을 다른 속성과 timespan 값을 더한 값과 비교하는 자식 컬렉션을 어떻게 필터링 할 수 있습니까?

분류에서Dev

루프의 각 항목 배열에 대한 약속을 반환하는 함수를 어떻게 호출 할 수 있습니까?

분류에서Dev

다른 함수의 루프 실행이 완료되면 어떻게 신속하게 함수를 호출 할 수 있습니까?

분류에서Dev

(@Produces) 다른 형식을 반환하는 동일한 @Path를 어떻게 호출 할 수 있습니까?

분류에서Dev

다른 명령 처리기에서 명령 처리기 호출을 어떻게 모의 할 수 있습니까?

분류에서Dev

속성을 호출하지 않고 클래스를 어떻게 호출 할 수 있습니까?

분류에서Dev

다른 클래스 버튼을 어떻게 호출 할 수 있습니까?-Swift

분류에서Dev

Postgres는 배열을 포함하여 json의 일부를 다른 JSON 필드로 어떻게 추출 할 수 있습니까?

분류에서Dev

Rspec을 사용하여 Ruby의 다른 클래스에서 메서드를 호출하는 메서드를 어떻게 테스트 할 수 있습니까?

분류에서Dev

@IBAction에서 URL 배열을 어떻게 호출 할 수 있습니까?

분류에서Dev

Arduino에서 다른 함수를 호출하기 위해 변경되는 int 값을 어떻게 사용할 수 있습니까?

분류에서Dev

wpa_supplicant의 다른 신호 레벨 출력을 어떻게 이해할 수 있습니까?

분류에서Dev

jest로 단위 테스트에서 여러 다른 데이터베이스 호출을 어떻게 모의 할 수 있습니까?

분류에서Dev

PHP에서 다차원 배열의 값을 어떻게 생성하고 전달할 수 있습니까?

분류에서Dev

% prun에 나열된 함수 호출을 담당하는 함수를 어떻게 확인할 수 있습니까?

분류에서Dev

컴포넌트의 다른 섹션에 반응하는 API 호출의 json 데이터를 어떻게 필터링 할 수 있습니까?

분류에서Dev

다른 배열의 배열에서 값을 어떻게 선택할 수 있습니까?

분류에서Dev

다른 페이지에있는 내 버튼 값을 어떻게 호출 할 수 있습니까?

분류에서Dev

Javascript : 메서드 호출을 통해 개체의 속성을 어떻게 정의 할 수 있습니까?

분류에서Dev

이 메서드를 호출하여이 배열을 어떻게 초기화 할 수 있습니까?

분류에서Dev

함수가 호출 될 때마다 배열의 요소를 어떻게 푸시 할 수 있습니까?

분류에서Dev

로컬 개발에 사용하기 위해 어떻게 가짜 keycloack 호출을 할 수 있습니까?

분류에서Dev

다른 여러 배열의 값을 새 단일 배열로 어떻게 전달할 수 있습니까?

분류에서Dev

조건이있는 두 개의 다른 배열을 어떻게 결합 할 수 있습니까?

분류에서Dev

이 유형의 배열 병합을 PHP에서 수행 할 수 있습니까? 가능하다면 어떻게?

분류에서Dev

"ctor ca n't be resolved"리플렉션 경고, 즉 생성자 호출을 수정하기 위해 clojure에 typehint를 어떻게 추가 할 수 있습니까?

분류에서Dev

컬렉션에있는 각 속성의 "유형"을 어떻게 얻을 수 있습니까?

Related 관련 기사

  1. 1

    Django에서 동일한 모델의 다른 속성을 어떻게 호출 / 참조 할 수 있습니까?

  2. 2

    VB 2008에서 하나의 하위 프로 시저가 다른 호출에서 구조의 다른 배열을 어떻게 받아 들일 수 있습니까?

  3. 3

    datetime 속성을 다른 속성과 timespan 값을 더한 값과 비교하는 자식 컬렉션을 어떻게 필터링 할 수 있습니까?

  4. 4

    루프의 각 항목 배열에 대한 약속을 반환하는 함수를 어떻게 호출 할 수 있습니까?

  5. 5

    다른 함수의 루프 실행이 완료되면 어떻게 신속하게 함수를 호출 할 수 있습니까?

  6. 6

    (@Produces) 다른 형식을 반환하는 동일한 @Path를 어떻게 호출 할 수 있습니까?

  7. 7

    다른 명령 처리기에서 명령 처리기 호출을 어떻게 모의 할 수 있습니까?

  8. 8

    속성을 호출하지 않고 클래스를 어떻게 호출 할 수 있습니까?

  9. 9

    다른 클래스 버튼을 어떻게 호출 할 수 있습니까?-Swift

  10. 10

    Postgres는 배열을 포함하여 json의 일부를 다른 JSON 필드로 어떻게 추출 할 수 있습니까?

  11. 11

    Rspec을 사용하여 Ruby의 다른 클래스에서 메서드를 호출하는 메서드를 어떻게 테스트 할 수 있습니까?

  12. 12

    @IBAction에서 URL 배열을 어떻게 호출 할 수 있습니까?

  13. 13

    Arduino에서 다른 함수를 호출하기 위해 변경되는 int 값을 어떻게 사용할 수 있습니까?

  14. 14

    wpa_supplicant의 다른 신호 레벨 출력을 어떻게 이해할 수 있습니까?

  15. 15

    jest로 단위 테스트에서 여러 다른 데이터베이스 호출을 어떻게 모의 할 수 있습니까?

  16. 16

    PHP에서 다차원 배열의 값을 어떻게 생성하고 전달할 수 있습니까?

  17. 17

    % prun에 나열된 함수 호출을 담당하는 함수를 어떻게 확인할 수 있습니까?

  18. 18

    컴포넌트의 다른 섹션에 반응하는 API 호출의 json 데이터를 어떻게 필터링 할 수 있습니까?

  19. 19

    다른 배열의 배열에서 값을 어떻게 선택할 수 있습니까?

  20. 20

    다른 페이지에있는 내 버튼 값을 어떻게 호출 할 수 있습니까?

  21. 21

    Javascript : 메서드 호출을 통해 개체의 속성을 어떻게 정의 할 수 있습니까?

  22. 22

    이 메서드를 호출하여이 배열을 어떻게 초기화 할 수 있습니까?

  23. 23

    함수가 호출 될 때마다 배열의 요소를 어떻게 푸시 할 수 있습니까?

  24. 24

    로컬 개발에 사용하기 위해 어떻게 가짜 keycloack 호출을 할 수 있습니까?

  25. 25

    다른 여러 배열의 값을 새 단일 배열로 어떻게 전달할 수 있습니까?

  26. 26

    조건이있는 두 개의 다른 배열을 어떻게 결합 할 수 있습니까?

  27. 27

    이 유형의 배열 병합을 PHP에서 수행 할 수 있습니까? 가능하다면 어떻게?

  28. 28

    "ctor ca n't be resolved"리플렉션 경고, 즉 생성자 호출을 수정하기 위해 clojure에 typehint를 어떻게 추가 할 수 있습니까?

  29. 29

    컬렉션에있는 각 속성의 "유형"을 어떻게 얻을 수 있습니까?

뜨겁다태그

보관