Модели
Модели — это стильные конструкторы, скомпилированные из наших Schema определений. Экземпляры этих моделей представляют документы, которые можно сохранять и извлекать из нашей базы данных. Все создание документов и извлечение из базы данных обрабатывается этими моделями.
Создание вашей первой модели
var schema = new mongoose.Schema({ name: 'string', size: 'string' }); var Tank = mongoose.model('Tank', schema);
Первый аргумент — это единственное имя коллекции, для которой предназначена ваша модель. Mongoose автоматически ищет множественное число от имени вашей модели. Таким образом, для приведённого выше примера модель Tank предназначена для коллекции tanks в базе данных. Функция .model() создаёт копию schema. Убедитесь, что вы добавили всё необходимое в schema перед вызовом .model()!
Создание документов
Документы — это экземпляры нашей модели. Их создание и сохранение в базе данных очень просто:
var Tank = mongoose.model('Tank', yourSchema); var small = new Tank({ size: 'small' }); small.save(function (err) { if (err) return handleError(err); // saved! }) // or Tank.create({ size: 'small' }, function (err, small) { if (err) return handleError(err); // saved! })
Обратите внимание, что никакие танки не будут созданы/удалены до тех пор, пока соединение, используемое вашей моделью, не будет открыто. Каждая модель имеет связанное с ней соединение. Когда вы используете mongoose.model(), ваша модель будет использовать стандартное соединение mongoose.
mongoose.connect('localhost', 'gettingstarted');
Если вы создаёте пользовательское соединение, используйте функцию model() этого соединения вместо этого.
var connection = mongoose.createConnection('mongodb://localhost:27017/test'); var Tank = connection.model('Tank', yourSchema);
Запросы
Поиск документов очень прост с помощью Mongoose, который поддерживает богатый синтаксис запросов MongoDB. Документы могут быть извлечены с помощью каждого models статического метода find, findById, findOne или where.
Tank.find({ size: 'small' }).where('createdDate').gt(oneYearAgo).exec(callback);
См. главу по запросам для получения более подробной информации о том, как использовать API Query.
Удаление
Модели имеют статический метод remove для удаления всех документов, соответствующих conditions.
Tank.remove({ size: 'large' }, function (err) {
if (err) return handleError(err);
// removed!
});
Обновление
У каждой model есть собственный метод update для изменения документов в базе данных без возврата их вашему приложению. См. документацию API для более подробной информации.
Если вы хотите обновить один документ в базе данных и вернуть его в ваше приложение, используйте findOneAndUpdate вместо этого.
Ещё
Документация API охватывает множество дополнительных методов, таких как count, mapReduce, aggregate и ещё.
Далее
Теперь, когда мы рассмотрели Models, давайте посмотрим на Документы.
© 2010 LearnBoost
Licensed under the MIT License.
https://mongoosejs.com/docs/4.x/docs/models.html