Szukaj…


Uwagi

Są to podstawowe operacje CRUD do używania bazy danych mongo z nodejs.

Pytanie: Czy są inne sposoby na zrobienie tego, co się tutaj dzieje?

Odpowiedź: Tak, można to zrobić na wiele sposobów.

Pytanie: Czy używanie mangusty jest konieczne?

Odpowiedź: Nie. Dostępne są inne pakiety, które mogą ci pomóc.

Pytanie: Gdzie mogę uzyskać pełną dokumentację dotyczącą mangusty?

Odpowiedź: Kliknij tutaj

Łączenie z bazą danych

Aby połączyć się z bazą danych mongo z aplikacji węzła, potrzebujemy mongoose.

Instalowanie Mongoose Przejdź do tokarki aplikacji i zainstaluj Mongoose przez

npm install mongoose

Następnie łączymy się z bazą danych.

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');
                    }
                });  

Tworzenie nowej kolekcji

W Mongoose wszystko pochodzi ze schematu. Stwórzmy schemat.

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'); 

Pamiętaj, metody muszą zostać dodane do schematu przed skompilowaniem go za pomocą mongoose.model (), jak zrobiono powyżej.

Wstawianie dokumentów

Aby wstawić nowy dokument do kolekcji, tworzymy obiekt schematu.

var Auto = require('models/auto')
var autoObj = new Auto({
    name: "NewName", 
    countOf: 10
});

Zapisujemy to w następujący sposób

autoObj.save(function(err, insertedAuto) {
    if (err) return console.error(err);
    insertedAuto.speak();
    // output: Hello this is NewName and I have counts of 10
});

Spowoduje to wstawienie nowego dokumentu do kolekcji

Czytanie

Odczytywanie danych z kolekcji jest bardzo łatwe. Pobieranie wszystkich danych z kolekcji.

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); 
})

Odczytywanie danych z warunkiem

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); 
})

Możesz także określić drugi parametr jako obiekt wszystkich potrzebnych pól

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); 
})

Znajdowanie jednego dokumentu w kolekcji.

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); 
})

Znajdowanie jednego dokumentu w kolekcji według identyfikatora.

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); 
})

Aktualizacja

Do aktualizacji zbiorów i dokumentów możemy użyć dowolnej z następujących metod:

Metody

  • aktualizacja()
  • updateOne ()
  • updateMany ()
  • replaceOne ()

Aktualizacja()

Metoda update () modyfikuje jeden lub wiele dokumentów (parametry aktualizacji)

db.lights.update(
   { room: "Bedroom" },
   { status: "On" }
)

Ta operacja przeszukuje kolekcję „świateł” w poszukiwaniu dokumentu, w którym room to Sypialnia (pierwszy parametr) . Następnie aktualizuje właściwość status pasujących dokumentów do On (drugi parametr) i zwraca obiekt WriteResult, który wygląda następująco:

{ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 }

UpdateOne

Metoda UpdateOne () modyfikuje JEDEN dokument (parametry aktualizacji)

db.countries.update(
   { country: "Sweden" },
   { capital: "Stockholm" }
)

Ta operacja przeszukuje kolekcję „kraje” w poszukiwaniu dokumentu, w którym country jest Szwecja (pierwszy parametr) . Następnie aktualizuje capital właściwości pasujących dokumentów do Sztokholmu (drugi parametr) i zwraca obiekt WriteResult, który wygląda następująco:

{ "acknowledged" : true, "matchedCount" : 1, "modifiedCount" : 1 }

UpdateMany

Metoda UpdateMany () modyfikuje dokumenty uniwersalne (parametry aktualizacji)

db.food.updateMany(
   { sold: { $lt: 10 } },
   { $set: { sold: 55 } }
)

Ta operacja aktualizuje wszystkie dokumenty (w kolekcji „żywności”), w których sold jest mniejsza niż 10 * (pierwszy parametr), ustawiając wartość sold na 55 . Następnie zwraca obiekt WriteResult, który wygląda następująco:

{ "acknowledged" : true, "matchedCount" : a, "modifiedCount" : b }

a = liczba dopasowanych dokumentów
b = liczba zmodyfikowanych dokumentów


ReplaceOne

Zastępuje pierwszy pasujący dokument (dokument zastępczy)

Ta przykładowa kolekcja o nazwie kraje zawiera 3 dokumenty:

{ "_id" : 1, "country" : "Sweden" }
{ "_id" : 2, "country" : "Norway" }
{ "_id" : 3, "country" : "Spain" }

Następująca operacja zastępuje dokument { country: "Spain" } dokumentem { country: "Finland" }

db.countries.replaceOne(
   { country: "Spain" },
   { country: "Finland" }
)

I zwraca:

{ "acknowledged" : true, "matchedCount" : 1, "modifiedCount" : 1 }

Przykładowe kraje kolekcji zawierają teraz:

{ "_id" : 1, "country" : "Sweden" }
{ "_id" : 2, "country" : "Norway" }
{ "_id" : 3, "country" : "Finland" }

Kasowanie

Usuwanie dokumentów z kolekcji w mangusty odbywa się w następujący sposób.

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
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow