Node.js
Node.JS и MongoDB.
Поиск…
замечания
Это основные операции CRUD для использования mongo db с nodejs.
Вопрос: Существуют ли другие способы сделать то, что делается здесь?
Ответ: Да, есть много способов сделать это.
Вопрос: Является ли использование мангуста необходимым?
Ответ: Нет. Есть другие доступные пакеты, которые могут вам помочь.
Вопрос: Где я могу получить полную документацию о мангусте?
Ответ: Нажмите здесь
Подключение к базе данных
Для подключения к базе данных mongo из приложения-узла требуется mongoose.
Установка Mongoose. Перейдите к гуцу вашего приложения и установите мангуст на
npm install mongoose
Затем мы подключаемся к базе данных.
var mongoose = require('mongoose');
//connect to the test database running on default mongod port of localhost
mongoose.connect('mongodb://localhost/test');
//Connecting with custom credentials
mongoose.connect('mongodb://USER:PASSWORD@HOST:PORT/DATABASE');
//Using Pool Size to define the number of connections opening
//Also you can use a call back function for error handling
mongoose.connect('mongodb://localhost:27017/consumers',
{server: { poolSize: 50 }},
function(err) {
if(err) {
console.log('error in this')
console.log(err);
// Do whatever to handle the error
} else {
console.log('Connected to the database');
}
});
Создание новой коллекции
С Mongoose все происходит от схемы. Позволяет создать схему.
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var AutoSchema = new Schema({
name : String,
countOf: Number,
});
// defining the document structure
// by default the collection created in the db would be the first parameter we use (or the plural of it)
module.exports = mongoose.model('Auto', AutoSchema);
// we can over write it and define the collection name by specifying that in the third parameters.
module.exports = mongoose.model('Auto', AutoSchema, 'collectionName');
// We can also define methods in the models.
AutoSchema.methods.speak = function () {
var greeting = this.name
? "Hello this is " + this.name+ " and I have counts of "+ this.countOf
: "I don't have a name";
console.log(greeting);
}
mongoose.model('Auto', AutoSchema, 'collectionName');
Помните, что методы должны быть добавлены в схему перед компиляцией с помощью mongoose.model (), как показано выше.
Вставка документов
Для вставки нового документа в коллекцию мы создаем объект схемы.
var Auto = require('models/auto')
var autoObj = new Auto({
name: "NewName",
countOf: 10
});
Мы сохраняем его следующим образом
autoObj.save(function(err, insertedAuto) {
if (err) return console.error(err);
insertedAuto.speak();
// output: Hello this is NewName and I have counts of 10
});
Это добавит новый документ в сборник
чтение
Чтение данных из коллекции очень просто. Получение всех данных коллекции.
var Auto = require('models/auto')
Auto.find({}, function (err, autos) {
if (err) return console.error(err);
// will return a json array of all the documents in the collection
console.log(autos);
})
Чтение данных с условием
Auto.find({countOf: {$gte: 5}}, function (err, autos) {
if (err) return console.error(err);
// will return a json array of all the documents in the collection whose count is greater than 5
console.log(autos);
})
Вы также можете указать второй параметр как объект того, что нужно всем полям
Auto.find({},{name:1}, function (err, autos) {
if (err) return console.error(err);
// will return a json array of name field of all the documents in the collection
console.log(autos);
})
Поиск одного документа в коллекции.
Auto.findOne({name:"newName"}, function (err, auto) {
if (err) return console.error(err);
//will return the first object of the document whose name is "newName"
console.log(auto);
})
Поиск одного документа в коллекции по id.
Auto.findById(123, function (err, auto) {
if (err) return console.error(err);
//will return the first json object of the document whose id is 123
console.log(auto);
})
обновление
Для обновления коллекций и документов мы можем использовать любой из этих методов:
методы
- Обновить()
- updateOne ()
- updateMany ()
- replaceOne ()
Обновить()
Метод update () изменяет один или несколько документов (параметры обновления)
db.lights.update(
{ room: "Bedroom" },
{ status: "On" }
)
Эта операция ищет коллекцию «огни» для документа , где room
является спальней (первый параметр). Затем он обновляет согласующие документы о status
собственности On (второй параметр) и возвращает объект WriteResult который выглядит следующим образом :
{ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 }
UpdateOne
Метод UpdateOne () изменяет один документ (параметры обновления)
db.countries.update(
{ country: "Sweden" },
{ capital: "Stockholm" }
)
Эта операция производит поиск коллекции "стран для документа , где country
является Швеция (первый параметр). Затем он обновляет согласующие документы собственности capital
в Стокгольм (второй параметр) и возвращает объект WriteResult который выглядит следующим образом :
{ "acknowledged" : true, "matchedCount" : 1, "modifiedCount" : 1 }
UpdateMany
Метод UpdateMany () изменяет многоуровневые документы (параметры обновления)
db.food.updateMany(
{ sold: { $lt: 10 } },
{ $set: { sold: 55 } }
)
Эта операция обновляет все документы (в коллекции «еда»), где sold
менее 10 * (1-й параметр), установив sold
на 55 . Затем он возвращает объект WriteResult, который выглядит так:
{ "acknowledged" : true, "matchedCount" : a, "modifiedCount" : b }
a = Количество согласованных документов
b = Количество измененных документов
ReplaceOne
Заменяет первый соответствующий документ (заменяющий документ)
В этом примере коллекция, называемая странами, содержит 3 документа:
{ "_id" : 1, "country" : "Sweden" }
{ "_id" : 2, "country" : "Norway" }
{ "_id" : 3, "country" : "Spain" }
Следующая операция заменяет документ { country: "Spain" }
документом { country: "Finland" }
db.countries.replaceOne(
{ country: "Spain" },
{ country: "Finland" }
)
И возвращает:
{ "acknowledged" : true, "matchedCount" : 1, "modifiedCount" : 1 }
В настоящее время страны, в которых собраны примеры, содержат:
{ "_id" : 1, "country" : "Sweden" }
{ "_id" : 2, "country" : "Norway" }
{ "_id" : 3, "country" : "Finland" }
Удаление
Удаление документов из коллекции в мангусте выполняется следующим образом.
Auto.remove({_id:123}, function(err, result){
if (err) return console.error(err);
console.log(result); // this will specify the mongo default delete result.
});