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


Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow