Поиск…


замечания

Это основные операции 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.
});


Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow