programing

MongoDB와 Mongoose의 차이점

linuxpc 2023. 3. 27. 21:03
반응형

MongoDB와 Mongoose의 차이점

나는 mongodb 데이터베이스를 사용하고 싶었지만, 웹사이트와 설치 방법 중 하나를 가진 두 개의 다른 데이터베이스가 있다는 것을 알게 되었다: mongodb와 mongoose.그래서 저는 스스로에게 이런 질문을 했습니다. "어느 것을 쓸까?"

이 질문에 답하기 위해 커뮤니티에 이 둘의 차이점을 설명해 주시겠습니까?그리고 가능하다면 장단점은?왜냐하면 그들은 나와 매우 닮았기 때문이다.

MongoDB가 BSON 문서 형태로 데이터를 저장하는 NoSQL 데이터베이스 시스템이라는 것은 이미 알고 계실 것입니다.단, Node.js 패키지에 대한 질문입니다.

Node.js에서 mongodb는 mongodb 인스턴스와 상호작용하기 위한 네이티브 드라이버이며 mongoose는 MongoDB의 객체 모델링 도구입니다.

mongoose를 기반으로 구축되어 있습니다.mongodb프로그래머에게 데이터를 모델링하는 방법을 제공하는 드라이버입니다.

편집: 어느 쪽이 좋은지에 대해서는 코멘트를 하고 싶지 않습니다.이것은 이 대답을 고집스럽게 하기 때문입니다.그러나 두 가지 접근 방식을 모두 사용할 경우 몇 가지 장점과 단점을 열거하겠습니다.

「」를 사용합니다.mongoose사용자는 특정 컬렉션의 문서에 대한 스키마를 정의할 수 있습니다.MongoDB는 MongoDB를 사용합니다.단점으로는 mongoose를 배우는데 시간이 걸릴 수 있고 스키마를 다루는 데 매우 복잡한 몇 가지 제한이 있습니다.

컬렉션 수 Node과 같은 Node.js를 하십시오.mongodb 수 있습니다.가장 간단하게 집어들 수 있습니다.단점은 데이터를 검증하기 위해 더 많은 양의 코드를 작성해야 하고 오류 위험이 더 높다는 것입니다.

Mongo는 NoSQL 데이터베이스입니다.

데이터 모델에 ORM을 사용하지 않으려면 네이티브 드라이버 mongo를 사용할 수도 있습니다.js: https://github.com/mongodb/node-mongodb-native.

Mongoose는 쉽게 이해할 수 있는 쿼리로 Mongo 데이터에 액세스할 수 있는 기능을 제공하는 ORM 중 하나입니다.

Mongoose는 데이터베이스 모델을 추상화하는 역할을 합니다.

하나, 두이 있다면, 이 두 가지 차이점을 하면, 이 두 가지 차이점을 발견하게 되는데, 그 차이는 ''는 입니다.connect to multiple databases와 함께mongodb native driver에서는 일을 하지 않으면 안 됩니다.mongoose아직 몇 가지 단점이 있습니다.

멀티테넌트 애플리케이션을 원하신다면 mongodb 네이티브 드라이버를 원하시면 됩니다.

첫 번째 대답부터

"Mongoose를 사용하여 사용자는 특정 컬렉션의 문서에 대한 스키마를 정의할 수 있습니다.MongoDB의 데이터 작성과 관리에 많은 편리성을 제공합니다.

mongoDB 네이티브드라이버를 사용하여 스키마를 정의할 수도 있습니다.

##신규 컬렉션용

db.createCollection("recipes",
    validator: { $jsonSchema: {
         <<Validation Rules>>
        }
    }
)

##기존 컬렉션의 경우

db.runCommand({
    collMod: "recipes",
    validator: { $jsonSchema: {
         <<Validation Rules>>
        }
    }
})
    

##완전한 예

db.createCollection("recipes", {
  validator: {
    $jsonSchema: {
      bsonType: "object",
      required: ["name", "servings", "ingredients"],
      additionalProperties: false,
      properties: {
        _id: {},
        name: {
          bsonType: "string",
          description: "'name' is required and is a string"
        },
        servings: {
          bsonType: ["int", "double"],
          minimum: 0,
          description:
            "'servings' is required and must be an integer with a minimum of zero."
        },
        cooking_method: {
          enum: [
            "broil",
            "grill",
            "roast",
            "bake",
            "saute",
            "pan-fry",
            "deep-fry",
            "poach",
            "simmer",
            "boil",
            "steam",
            "braise",
            "stew"
          ],
          description:
            "'cooking_method' is optional but, if used, must be one of the listed options."
        },
        ingredients: {
          bsonType: ["array"],
          minItems: 1,
          maxItems: 50,
          items: {
            bsonType: ["object"],
            required: ["quantity", "measure", "ingredient"],
            additionalProperties: false,
            description: "'ingredients' must contain the stated fields.",
            properties: {
              quantity: {
                bsonType: ["int", "double", "decimal"],
                description:
                  "'quantity' is required and is of double or decimal type"
              },
              measure: {
                enum: ["tsp", "Tbsp", "cup", "ounce", "pound", "each"],
                description:
                  "'measure' is required and can only be one of the given enum values"
              },
              ingredient: {
                bsonType: "string",
                description: "'ingredient' is required and is a string"
              },
              format: {
                bsonType: "string",
                description:
                  "'format' is an optional field of type string, e.g. chopped or diced"
              }
            }
          }
        }
      }
    }
  }
});

컬렉션 삽입 예시

db.recipes.insertOne({
  name: "Chocolate Sponge Cake Filling",
  servings: 4,
  ingredients: [
    {
      quantity: 7,
      measure: "ounce",
      ingredient: "bittersweet chocolate",
      format: "chopped"
    },
    { quantity: 2, measure: "cup", ingredient: "heavy cream" }
  ]
});

Mongodb와 Mongoose는 MongoDB 데이터베이스와 상호작용하는 두 가지 다른 드라이버입니다.

Mongoose : 데이터에 엄격한 모델링 환경을 제공하는 객체 데이터 모델링(ODM) 라이브러리.MongoDB와 상호 작용하기 위해 사용되며, 데이터 관리 편의성을 제공하여 생활을 편리하게 합니다.

Mongodb: MongoDB와 대화하기 위한 Node.js의 네이티브 드라이버.

mongo-db신규 개발자에게는 그다지 좋은 선택이 아닐 것입니다.
반면에mongooseORM(Object Relational Mapping)은 신규 사용자에게 더 나은 선택이 될 수 있습니다.

이러한 컴포넌트를 독자적인 코드와 함께 사용하는 경우는, 이하의 정보를 참조해 주세요.

Mongodb:

  1. 데이터베이스입니다.
  2. 이 컴포넌트는 AFPL(Affero General Public License) 라이선스의 지배를 받습니다.
  3. 이 컴포넌트를 독자적인 코드와 링크하면 (GPL, LGPL 등)와 같은 바이러스 효과가 있기 때문에 모든 소스 코드를 퍼블릭 도메인에 공개해야 합니다.
  4. 클라우드를 통해 애플리케이션을 호스팅하는 경우 (2)가 적용되며 설치 정보도 최종 사용자에게 공개해야 합니다.

몽구스:

  1. 객체 모델링 도구입니다.
  2. 이 컴포넌트는 MIT 라이선스의 지배를 받습니다.
  3. 이 컴포넌트는 제한 없이 자체 코드와 함께 사용할 수 있습니다.
  4. 미디어 또는 호스트를 사용하여 응용 프로그램을 전송할 수 있습니다.

Mongoose는 mongodb 드라이버 위에 구축되어 있으며, mongodb 드라이버는 더 낮은 레벨입니다.Mongoose는 스키마와 쿼리를 쉽게 정의할 수 있는 쉬운 추상화를 제공합니다.하지만 성능 측면에서는 Mongdb Driver가 최고입니다.

Mongodb와 Mongoose는 완전히 다른 것입니다!

Mongodb는 데이터베이스 자체이며 Mongoose는 Mongodb의 객체 모델링 도구입니다.

편집: 지적했듯이 MongoDB는 npm 패키지입니다.감사합니다.

MongoDB는 MongoDB Node.js 공식 드라이버로 Node.js 응용 프로그램을 MongoDB에 연결하여 데이터를 처리할 수 있습니다.다른 쪽에서는 Mongoose를 mongoDB 위에 다른 라이브러리를 구축합니다.더 쉽게 이해하고 사용할 수 있습니다.만약 당신이 초보자라면 몽구스보다 함께 일하기에 더 좋습니다.

언급URL : https://stackoverflow.com/questions/28712248/difference-between-mongodb-and-mongoose

반응형