Node.js
Node.JS i MongoDB.
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.
});