Команды Mongoose аналогичны командам реляционной базы данных

Я очень запутался между схемой, моделью, экземпляром модели и коллекцией в Mongoose.

Мое понимание заключается в следующем:

  1. Mongoose.schema( { } ) — аналогично определению столбцов таблицы в реляционных базах данных.
  2. Mongoose.model('Name', Schema) — аналогично созданию таблицы в реляционной базе данных (оператор create table)
  3. новая модель ({ //DATA }) — аналогично созданию строки в реляционной базе данных.
  4. новая модель ().query() — аналогична операторам запроса (общий запрос) в реляционных базах данных.

Это правильно?


person lynxx    schedule 17.01.2020    source источник
comment
Руководство по MongoDB включает в себя общую диаграмму сопоставления SQL и MongoDB, которая связывает терминологию, концепции и инструкции между SQL и MongoDB. Mongoose добавляет дополнительный уровень абстракции поверх официального драйвера MongoDB Node.js и стремится предоставить более удобный интерфейс для разработчиков.   -  person Stennie    schedule 19.01.2020


Ответы (1)


Вы во многом правы.

Во-первых, MongoDB по своей природе неструктурирована, поэтому я рекомендую не пытаться найти «аналогии», чтобы сопоставить ее со структурированной схемой. С учетом сказанного сходство существует, поэтому для простоты мы можем это сделать.

Еще одно замечание: этот синтаксис, на который вы ссылаетесь, является конкретно mongoose, а не исходным синтаксисом Mongo.

  1. Mongoose.schema( { } ) Да, мангуст дает вам возможность "форсировать" структуру, обратите внимание, что это вступит в игру только при попытке insert/create/update документов, а не при запросе.

  2. Mongoose.model('Name', Schema) Да-да, mongoose не будет создавать базу данных как таковую, то есть, если она не существует, будет создана новая, однако вставка документа в эту модель создаст такую ​​коллекцию.

  3. new Model ({ //DATA }) Да, однако нужно добавить new Model().save(), без сохранения он не сработает и не сохранится в БД.

  4. new Model ().query() Да-да, снова похоже на функцию model, это оболочка мангуста (с которой я менее знаком). Как указано в документы:

Конструктор запросов, используемый для построения запросов. Вам не нужно создавать экземпляр запроса напрямую. Вместо этого используйте функции модели, такие как Model.find().

Лично я просто использую функции модели для запросов, таких как find, findOne, aggregate и других.

person Tom Slabbaert    schedule 18.01.2020