복붙노트

[MONGODB] 중첩 된 스키마 대 몽구스 하위 문서

MONGODB

중첩 된 스키마 대 몽구스 하위 문서

나는 프로와 내 주요 스키마의 깊은 층 대 하위 문서를 사용하는 단점에 관해서 궁금 :

var subDoc = new Schema({
  name: String
});

var mainDoc = new Schema({
  names: [subDoc]
});

또는

var mainDoc = new Schema({
  names: [{
    name: String
 }]
});

나는 현재 모든 곳에서 subdocs를 사용하고 있지만 성능에 대해 주로 궁금해 또는 I 발생할 수있는 문제를 질의하고있다.

해결법

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

    1.워드 프로세서에 따르면, 그것은 정확히 동일합니다. 그러나, 스키마를 사용하는 것이 아니라 (한 당신이 장애인을 가지고 있지 않는 한) 같은 _id 필드를 추가하고, 아마도 subdocs을 추적하기 위해 좀 더 많은 리소스를 사용합니다.

    워드 프로세서에 따르면, 그것은 정확히 동일합니다. 그러나, 스키마를 사용하는 것이 아니라 (한 당신이 장애인을 가지고 있지 않는 한) 같은 _id 필드를 추가하고, 아마도 subdocs을 추적하기 위해 좀 더 많은 리소스를 사용합니다.

  2. ==============================

    2.당신이 다시 사용 모델의 다양한 부분에있는 스키마가있는 경우 당신이 자신을 복제 할 필요가 없습니다, 자식 문서에 대한 개별 스키마를 정의하는 것이 유용 할 수 있습니다.

    당신이 다시 사용 모델의 다양한 부분에있는 스키마가있는 경우 당신이 자신을 복제 할 필요가 없습니다, 자식 문서에 대한 개별 스키마를 정의하는 것이 유용 할 수 있습니다.

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

    3.정적 문서 또는 그 때문에 성능에 미치는 영향의 몇 백 이하되는 경우 포함 된 문서를 사용해야합니다. 나는 얼마 전에 대한 그 문제에 대해 겪었습니다. 새로, MongoDB를위한 솔루션 건축가로 작동하기 Asya Kamsky는 "하위 문서를 사용하여"에 대한 기사를 작성했다.

    정적 문서 또는 그 때문에 성능에 미치는 영향의 몇 백 이하되는 경우 포함 된 문서를 사용해야합니다. 나는 얼마 전에 대한 그 문제에 대해 겪었습니다. 새로, MongoDB를위한 솔루션 건축가로 작동하기 Asya Kamsky는 "하위 문서를 사용하여"에 대한 기사를 작성했다.

    그 솔루션 또는 가장 좋은 방법을 찾고있는 사람들에게 도움이되기를 바랍니다.

    http://askasya.com/post/largeembeddedarrays에 원래 게시 할 수 있습니다. 당신은 그녀를 https://stackoverflow.com/users/431012/asya-kamsky에 프로파일 유래에 도달 할 수 있습니다

  4. ==============================

    4.기본적으로, 변수 nestedDov를 만들고 이름을 여기에 넣어 : [nestedDov를]

    기본적으로, 변수 nestedDov를 만들고 이름을 여기에 넣어 : [nestedDov를]

    간단한 버전 :

    var nestedDoc = new Schema({
      name: String
    });
    
    var mainDoc = new Schema({
      names: [nestedDoc]
    });
    

    JSON 예

    {
        "_id" : ObjectId("57c88bf5818e70007dc72e85"),
        "name" : "Corinthia Hotel Budapest",
        "stars" : 5,
        "description" : "The 5-star Corinthia Hotel Budapest on the Grand Boulevard offers free access to its Royal Spa",
        "photos" : [
            "/photos/hotel/corinthiahotelbudapest/1.jpg",
            "/photos/hotel/corinthiahotelbudapest/2.jpg"
        ],
        "currency" : "HUF",
        "rooms" : [
            {
                "type" : "Superior Double or Twin Room",
                "number" : 20,
                "description" : "These are some great rooms",
                "photos" : [
                    "/photos/room/corinthiahotelbudapest/2.jpg",
                    "/photos/room/corinthiahotelbudapest/5.jpg"
                ],
                "price" : 73000
            },
            {
                "type" : "Deluxe Double Room",
                "number" : 50,
                "description" : "These are amazing rooms",
                "photos" : [
                    "/photos/room/corinthiahotelbudapest/4.jpg",
                    "/photos/room/corinthiahotelbudapest/6.jpg"
                ],
                "price" : 92000
            },
            {
                "type" : "Executive Double Room",
                "number" : 25,
                "description" : "These are amazing rooms",
                "photos" : [
                    "/photos/room/corinthiahotelbudapest/4.jpg",
                    "/photos/room/corinthiahotelbudapest/6.jpg"
                ],
                "price" : 112000
            }
        ],
        "reviews" : [
            {
                "name" : "Tamas",
                "id" : "/user/tamas.json",
                "review" : "Great hotel",
                "rating" : 4
            }
        ],
        "services" : [
            "Room service",
            "Airport shuttle (surcharge)",
            "24-hour front desk",
            "Currency exchange",
            "Tour desk"
        ]
    }
    

    예:

  5. ==============================

    5.나는이 SO에 여러 개의 우편으로 다른 곳에서 처리됩니다 생각합니다.

    나는이 SO에 여러 개의 우편으로 다른 곳에서 처리됩니다 생각합니다.

    불과 몇 :

    큰 열쇠는 여기에 단 하나의 대답은 다소 복잡한 트레이드 오프의 세트가 없다는 것입니다.

  6. ==============================

    6.둘 사이에 약간의 차이가 있습니다 :

    둘 사이에 약간의 차이가 있습니다 :

  7. from https://stackoverflow.com/questions/15208711/mongoose-subdocuments-vs-nested-schema by cc-by-sa and MIT license