Zoeken…


Maak verbinding met MongoDB via Mongoose

Installeer eerst Mongoose met:

npm install mongoose

Voeg het vervolgens toe aan server.js als afhankelijkheden:

var mongoose = require('mongoose');
var Schema = mongoose.Schema;

Maak vervolgens het databaseschema en de naam van de verzameling:

var schemaName = new Schema({
    request: String,
    time: Number
}, {
    collection: 'collectionName'
});

Maak een model en maak verbinding met de database:

var Model = mongoose.model('Model', schemaName);
mongoose.connect('mongodb://localhost:27017/dbName');

Start vervolgens MongoDB en voer server.js met node server.js

Om te controleren of we met succes verbinding hebben gemaakt met de database, kunnen we de open gebeurtenissen gebruiken, error van het mongoose.connection object.

var db = mongoose.connection;
db.on('error', console.error.bind(console, 'connection error:'));
db.once('open', function() {
  // we're connected!
});

Gegevens opslaan in MongoDB met behulp van Mongoose en Express.js Routes

Opstelling

Installeer eerst de benodigde pakketten met:

npm install express cors mongoose

Code

Voeg vervolgens afhankelijkheden toe aan uw server.js bestand, maak het databaseschema en de naam van de collectie, maak een Express.js-server en maak verbinding met MongoDB:

var express = require('express');
var cors = require('cors'); // We will use CORS to enable cross origin domain requests.
var mongoose = require('mongoose');
var Schema = mongoose.Schema;

var app = express();

var schemaName = new Schema({
    request: String,
    time: Number
}, {
    collection: 'collectionName'
});

var Model = mongoose.model('Model', schemaName);
mongoose.connect('mongodb://localhost:27017/dbName');

var port = process.env.PORT || 8080;
app.listen(port, function() {
    console.log('Node.js listening on port ' + port);
});

Voeg nu Express.js-routes toe die we zullen gebruiken om de gegevens te schrijven:

app.get('/save/:query', cors(), function(req, res) {
    var query = req.params.query;

    var savedata = new Model({
        'request': query,
        'time': Math.floor(Date.now() / 1000) // Time of save the data in unix timestamp format
    }).save(function(err, result) {
        if (err) throw err;

        if(result) {
            res.json(result)
        }
    })
})

Hier is de query de parameter <query> van het inkomende HTTP-verzoek, die wordt opgeslagen in MongoDB:

var savedata = new Model({
    'request': query,
    //...

Als er een fout optreedt tijdens het schrijven naar MongoDB, ontvangt u een foutbericht op de console. Als alles succesvol is, ziet u de opgeslagen gegevens in JSON-indeling op de pagina.

//...
}).save(function(err, result) {
    if (err) throw err;

    if(result) {
        res.json(result)
    }
})
//...

Nu moet u MongoDB starten en uw server.js bestand uitvoeren met node server.js .

Gebruik

Om dit te gebruiken om gegevens op te slaan, gaat u naar de volgende URL in uw browser:

http://localhost:8080/save/<query>

Waarbij <query> het nieuwe verzoek is dat u wilt opslaan.

Voorbeeld:

http://localhost:8080/save/JavaScript%20is%20Awesome

Uitvoer in JSON-indeling:

{
    __v: 0,
    request: "JavaScript is Awesome",
    time: 1469411348,
    _id: "57957014b93bc8640f2c78c4"
}

Vind gegevens in MongoDB met behulp van Mongoose en Express.js Routes

Opstelling

Installeer eerst de benodigde pakketten met:

npm install express cors mongoose

Code

Voeg vervolgens afhankelijkheden toe aan server.js , maak het databaseschema en de naam van de collectie, maak een Express.js-server en maak verbinding met MongoDB:

var express = require('express');
var cors = require('cors'); // We will use CORS to enable cross origin domain requests.
var mongoose = require('mongoose');
var Schema = mongoose.Schema;

var app = express();

var schemaName = new Schema({
    request: String,
    time: Number
}, {
    collection: 'collectionName'
});

var Model = mongoose.model('Model', schemaName);
mongoose.connect('mongodb://localhost:27017/dbName');

var port = process.env.PORT || 8080;
app.listen(port, function() {
    console.log('Node.js listening on port ' + port);
});

Voeg nu Express.js-routes toe die we zullen gebruiken om de gegevens op te vragen:

app.get('/find/:query', cors(), function(req, res) {
    var query = req.params.query;

    Model.find({
        'request': query
    }, function(err, result) {
        if (err) throw err;
        if (result) {
            res.json(result)
        } else {
            res.send(JSON.stringify({
                error : 'Error'
            }))
        }
    })
})

Stel dat de volgende documenten zich in de verzameling in het model bevinden:

{
        "_id" : ObjectId("578abe97522ad414b8eeb55a"),
        "request" : "JavaScript is Awesome",
        "time" : 1468710551
}
{
        "_id" : ObjectId("578abe9b522ad414b8eeb55b"),
        "request" : "JavaScript is Awesome",
        "time" : 1468710555
}
{
        "_id" : ObjectId("578abea0522ad414b8eeb55c"),
        "request" : "JavaScript is Awesome",
        "time" : 1468710560
}

En het doel is om alle documenten met "JavaScript is Awesome" te vinden en weer te geven onder de toets "request" .

Start hiervoor MongoDB en voer server.js met node server.js :

Gebruik

Om dit te gebruiken om gegevens te vinden, gaat u naar de volgende URL in een browser:

http://localhost:8080/find/<query>

Waar <query> de zoekopdracht is.

Voorbeeld:

http://localhost:8080/find/JavaScript%20is%20Awesome

Output:

[{
    _id: "578abe97522ad414b8eeb55a",
    request: "JavaScript is Awesome",
    time: 1468710551,
    __v: 0
},
{
    _id: "578abe9b522ad414b8eeb55b",
    request: "JavaScript is Awesome",
    time: 1468710555,
    __v: 0
},
{
    _id: "578abea0522ad414b8eeb55c",
    request: "JavaScript is Awesome",
    time: 1468710560,
    __v: 0
}]

Vind gegevens in MongoDB met behulp van Mongoose, Express.js Routes en $ text Operator

Opstelling

Installeer eerst de benodigde pakketten met:

npm install express cors mongoose

Code

Voeg vervolgens afhankelijkheden toe aan server.js , maak het databaseschema en de naam van de collectie, maak een Express.js-server en maak verbinding met MongoDB:

var express = require('express');
var cors = require('cors'); // We will use CORS to enable cross origin domain requests.
var mongoose = require('mongoose');
var Schema = mongoose.Schema;

var app = express();

var schemaName = new Schema({
    request: String,
    time: Number
}, {
    collection: 'collectionName'
});

var Model = mongoose.model('Model', schemaName);
mongoose.connect('mongodb://localhost:27017/dbName');

var port = process.env.PORT || 8080;
app.listen(port, function() {
    console.log('Node.js listening on port ' + port);
});

Voeg nu Express.js-routes toe die we zullen gebruiken om de gegevens op te vragen:

app.get('/find/:query', cors(), function(req, res) {
    var query = req.params.query;

    Model.find({
        'request': query
    }, function(err, result) {
        if (err) throw err;
        if (result) {
            res.json(result)
        } else {
            res.send(JSON.stringify({
                error : 'Error'
            }))
        }
    })
})

Stel dat de volgende documenten zich in de verzameling in het model bevinden:

{
        "_id" : ObjectId("578abe97522ad414b8eeb55a"),
        "request" : "JavaScript is Awesome",
        "time" : 1468710551
}
{
        "_id" : ObjectId("578abe9b522ad414b8eeb55b"),
        "request" : "JavaScript is Awesome",
        "time" : 1468710555
}
{
        "_id" : ObjectId("578abea0522ad414b8eeb55c"),
        "request" : "JavaScript is Awesome",
        "time" : 1468710560
}

En dat het doel is om alle documenten te vinden en weer te geven die alleen het woord "JavaScript" onder de sleutel "request" .

Maak hiervoor eerst een tekstindex voor "request" in de verzameling. Voeg hiervoor de volgende code toe aan server.js :

schemaName.index({ request: 'text' });

En vervangen:

    Model.find({
        'request': query
    }, function(err, result) {

Met:

Model.find({
    $text: {
        $search: query
    }
}, function(err, result) {

Hier gebruiken we $text en $search MongoDB-operatoren om alle documenten in de collection collectionName die ten minste één woord uit de opgegeven zoekopdracht bevatten.

Gebruik

Om dit te gebruiken om gegevens te vinden, gaat u naar de volgende URL in een browser:

http://localhost:8080/find/<query>

Waar <query> de zoekopdracht is.

Voorbeeld:

http://localhost:8080/find/JavaScript

Output:

[{
    _id: "578abe97522ad414b8eeb55a",
    request: "JavaScript is Awesome",
    time: 1468710551,
    __v: 0
},
{
    _id: "578abe9b522ad414b8eeb55b",
    request: "JavaScript is Awesome",
    time: 1468710555,
    __v: 0
},
{
    _id: "578abea0522ad414b8eeb55c",
    request: "JavaScript is Awesome",
    time: 1468710560,
    __v: 0
}]

Indexen in modellen.

MongoDB ondersteunt secundaire indexen. In Mongoose definiëren we deze indexen binnen ons schema. Het definiëren van indexen op schemaniveau is nodig wanneer we samengestelde indexen moeten maken.

Mongoose-verbinding

var strConnection = 'mongodb://localhost:27017/dbName';
var db = mongoose.createConnection(strConnection)

Een basisschema maken

var Schema = require('mongoose').Schema;
var usersSchema = new Schema({
    username: {
        type: String,
        required: true,
        unique: true
    },
    email: {
        type: String,
        required: true
    },
    password: {
        type: String,
        required: true
    },
    created: {
        type: Date,
        default: Date.now
    }
});

var usersModel = db.model('users', usersSchema);
module.exports = usersModel;

Standaard voegt mangoest twee nieuwe velden toe aan ons model, zelfs als deze niet in het model zijn gedefinieerd. Die velden zijn:

_ID kaart

Mongoose wijst elk van uw schema's standaard een _id-veld toe als er geen wordt doorgegeven aan de Schema-constructor. Het toegewezen type is een ObjectId dat samenvalt met het standaardgedrag van MongoDB. Als u helemaal geen _id aan uw schema wilt toevoegen, kunt u deze met deze optie uitschakelen.

var usersSchema = new Schema({
    username: {
        type: String,
        required: true,
        unique: true
    }, {
        _id: false 
});

__v of versionKey

De versionKey is een eigenschap die op elk document is ingesteld wanneer deze voor het eerst werd gemaakt door Mongoose. Deze sleutelwaarde bevat de interne revisie van het document. De naam van deze documenteigenschap kan worden geconfigureerd.

U kunt dit veld eenvoudig uitschakelen in de modelconfiguratie:

var usersSchema = new Schema({
    username: {
        type: String,
        required: true,
        unique: true
    }, {
    versionKey: false 
});

Samengestelde indexen

We kunnen nog andere indexen maken dan die Mongoose maakt.

usersSchema.index({username: 1 });
usersSchema.index({email: 1 });

In dit geval heeft ons model nog twee indexen, een voor de veldgebruikersnaam en een voor het e-mailveld. Maar we kunnen samengestelde indexen maken.

usersSchema.index({username: 1, email: 1 });

Impact op indexprestaties

Standaard roept mongoose altijd de sureIndex voor elke index opeenvolgend op en zendt een 'index'-gebeurtenis uit op het model wanneer alle aanroepen van sureIndex zijn geslaagd of wanneer er een fout is opgetreden.

In MongoDB zorgt ervoor datIndex is gedeprecieerd sinds versie 3.0.0, nu is het een alias voor createIndex.

Aanbevolen wordt om het gedrag uit te schakelen door de optie autoIndex van uw schema in te stellen op false of globaal op de verbinding door de optie config.autoIndex in te stellen op false.

usersSchema.set('autoIndex', false);

Handige Mongoose-functies

Mongoes bevat een aantal ingebouwde functies die voortbouwen op de standaard find() .

doc.find({'some.value':5},function(err,docs){
    //returns array docs
});

doc.findOne({'some.value':5},function(err,doc){
    //returns document doc
});

doc.findById(obj._id,function(err,doc){
    //returns document doc
});

vind gegevens in mongodb met behulp van beloften

Opstelling

Installeer eerst de benodigde pakketten met:

npm install express cors mongoose

Code

Voeg vervolgens afhankelijkheden toe aan server.js , maak het databaseschema en de naam van de collectie, maak een Express.js-server en maak verbinding met MongoDB:

var express = require('express');
var cors = require('cors'); // We will use CORS to enable cross origin domain requests.
var mongoose = require('mongoose');
var Schema = mongoose.Schema;

var app = express();

var schemaName = new Schema({
    request: String,
    time: Number
}, {
    collection: 'collectionName'
});

var Model = mongoose.model('Model', schemaName);
mongoose.connect('mongodb://localhost:27017/dbName');

var port = process.env.PORT || 8080;
app.listen(port, function() {
    console.log('Node.js listening on port ' + port);
});

app.use(function(err, req, res, next) {
  console.error(err.stack);
  res.status(500).send('Something broke!');
});

app.use(function(req, res, next) {
  res.status(404).send('Sorry cant find that!');
});

Voeg nu Express.js-routes toe die we zullen gebruiken om de gegevens op te vragen:

app.get('/find/:query', cors(), function(req, res, next) {
    var query = req.params.query;

    Model.find({
        'request': query
    })
    .exec() //remember to add exec, queries have a .then attribute but aren't promises
    .then(function(result) {
        if (result) {
            res.json(result)
        } else {
            next() //pass to 404 handler
        }
    })
    .catch(next) //pass to error handler
})

Stel dat de volgende documenten zich in de verzameling in het model bevinden:

{
        "_id" : ObjectId("578abe97522ad414b8eeb55a"),
        "request" : "JavaScript is Awesome",
        "time" : 1468710551
}
{
        "_id" : ObjectId("578abe9b522ad414b8eeb55b"),
        "request" : "JavaScript is Awesome",
        "time" : 1468710555
}
{
        "_id" : ObjectId("578abea0522ad414b8eeb55c"),
        "request" : "JavaScript is Awesome",
        "time" : 1468710560
}

En het doel is om alle documenten met "JavaScript is Awesome" te vinden en weer te geven onder de toets "request" .

Start hiervoor MongoDB en voer server.js met node server.js :

Gebruik

Om dit te gebruiken om gegevens te vinden, gaat u naar de volgende URL in een browser:

http://localhost:8080/find/<query>

Waar <query> de zoekopdracht is.

Voorbeeld:

http://localhost:8080/find/JavaScript%20is%20Awesome

Output:

[{
    _id: "578abe97522ad414b8eeb55a",
    request: "JavaScript is Awesome",
    time: 1468710551,
    __v: 0
},
{
    _id: "578abe9b522ad414b8eeb55b",
    request: "JavaScript is Awesome",
    time: 1468710555,
    __v: 0
},
{
    _id: "578abea0522ad414b8eeb55c",
    request: "JavaScript is Awesome",
    time: 1468710560,
    __v: 0
}]


Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow