Node.js
Node.JS och MongoDB.
Sök…
Anmärkningar
Dessa är de grundläggande CRUD-operationerna för att använda mongo db med nodejs.
Fråga: Finns det andra sätt att göra vad som görs här ??
Svar: Ja, det finns många sätt att göra detta.
Fråga: Är det att använda mongoose nödvändigt ??
Svar: Nej. Det finns andra paket tillgängliga som kan hjälpa dig.
Fråga: Var kan jag få fullständig dokumentation av mongoose ??
Svar: Klicka här
Ansluta till en databas
För att ansluta till en mongodatabas från nodtillämpning kräver vi mongos.
Installera Mongoose Gå till applikationen och installera mongoose av
npm install mongoose
Därefter ansluter vi till databasen.
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');
}
});
Skapa ny samling
Med Mongoose härleds allt från ett schema. Låter skapa ett schema.
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');
Kom ihåg att metoder måste läggas till schemat innan du sammanställer det med mongoose.model () som gjort ovan ...
Infoga dokument
För att infoga ett nytt dokument i samlingen skapar vi ett objekt för schemat.
var Auto = require('models/auto')
var autoObj = new Auto({
name: "NewName",
countOf: 10
});
Vi sparar det på följande sätt
autoObj.save(function(err, insertedAuto) {
if (err) return console.error(err);
insertedAuto.speak();
// output: Hello this is NewName and I have counts of 10
});
Detta kommer att infoga ett nytt dokument i samlingen
Läsning
Det är mycket enkelt att läsa data från samlingen. Få alla uppgifter om samlingen.
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);
})
Läsa data med ett villkor
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);
})
Du kan också ange den andra parametern som objekt för alla fält du behöver
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);
})
Hitta ett dokument i en samling.
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);
})
Hitta ett dokument i en samling med 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);
})
Uppdaterande
För att uppdatera samlingar och dokument kan vi använda någon av dessa metoder:
metoder
- uppdatering()
- updateOne ()
- updateMany ()
- replaceOne ()
Uppdatering()
Metoden uppdatering () ändrar ett eller många dokument (uppdateringsparametrar)
db.lights.update(
{ room: "Bedroom" },
{ status: "On" }
)
Den här åtgärden söker i "lampor" -samlingen efter ett dokument där room
är sovrum (första parametern) . Den uppdaterar sedan matchande dokument status
egendom till On (2: a parameter) och returnerar en WriteResult objekt som ser ut såhär:
{ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 }
UpdateOne
Metoden UpdateOne () modifierar ETT dokument (uppdateringsparametrar)
db.countries.update(
{ country: "Sweden" },
{ capital: "Stockholm" }
)
Denna åtgärd söker i "länder" -samlingen efter ett dokument där country
är Sverige (första parametern) . Den uppdaterar sedan matchande dokument capital
till Stockholm (2: a parameter) och returnerar en WriteResult objekt som ser ut såhär:
{ "acknowledged" : true, "matchedCount" : 1, "modifiedCount" : 1 }
UpdateMany
Metoden UpdateMany () ändrar multibla dokument (uppdateringsparametrar)
db.food.updateMany(
{ sold: { $lt: 10 } },
{ $set: { sold: 55 } }
)
Denna operation uppdaterar alla dokument (i en "mat" -samling) där sold
är mindre än 10 * (1: a parameter) genom att ställa in sold
till 55 . Det returnerar sedan ett WritResult-objekt som ser ut så här:
{ "acknowledged" : true, "matchedCount" : a, "modifiedCount" : b }
a = Antal matchade dokument
b = Antal modifierade dokument
ReplaceOne
Ersätter det första matchande dokumentet (ersättningsdokument)
Det här exemplet som kallas länder innehåller tre dokument:
{ "_id" : 1, "country" : "Sweden" }
{ "_id" : 2, "country" : "Norway" }
{ "_id" : 3, "country" : "Spain" }
Följande åtgärd ersätter dokumentet { country: "Spain" }
med dokumentet { country: "Finland" }
db.countries.replaceOne(
{ country: "Spain" },
{ country: "Finland" }
)
Och returnerar:
{ "acknowledged" : true, "matchedCount" : 1, "modifiedCount" : 1 }
Länderna exempel samling nu innehåller:
{ "_id" : 1, "country" : "Sweden" }
{ "_id" : 2, "country" : "Norway" }
{ "_id" : 3, "country" : "Finland" }
Tar bort
Radering av dokument från en samling i mongoose görs på följande sätt.
Auto.remove({_id:123}, function(err, result){
if (err) return console.error(err);
console.log(result); // this will specify the mongo default delete result.
});