Sök…


Anslut till MongoDB med Mongoose

Installera Mongoose först med:

npm install mongoose

Lägg sedan till den till server.js som beroenden:

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

Skapa sedan databasschemat och namnet på samlingen:

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

Skapa en modell och anslut till databasen:

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

server.js MongoDB och kör server.js med node server.js

För att kontrollera om vi har anslutit oss till databasen kan vi använda händelserna open , error från mongoose.connection objektet.

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

Spara data på MongoDB med Mongoose- och Express.js-rutter

Uppstart

Först installerar du nödvändiga paket med:

npm install express cors mongoose

Koda

Lägg sedan till beroenden till din server.js fil, skapa databasschemat och namnet på samlingen, skapa en Express.js-server och anslut till 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);
});

Lägg nu till Express.js-rutter som vi kommer att använda för att skriva data:

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

Här kommer query att vara <query> -parametern från den inkommande HTTP-begäran, som kommer att sparas i MongoDB:

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

Om ett fel uppstår när du försöker skriva till MongoDB får du ett felmeddelande på konsolen. Om allt är framgångsrikt ser du sparade data i JSON-format på sidan.

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

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

Nu måste du starta MongoDB och köra din server.js fil med node server.js .

Användande

För att använda detta för att spara data, gå till följande URL i din webbläsare:

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

Där <query> är den nya begäran du vill spara.

Exempel:

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

Utgång i JSON-format:

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

Hitta data i MongoDB med hjälp av Mongoose- och Express.js-rutter

Uppstart

Först installerar du nödvändiga paket med:

npm install express cors mongoose

Koda

Lägg sedan till beroenden till server.js , skapa databasschemat och namnet på samlingen, skapa en Express.js-server och anslut till 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);
});

Lägg nu till Express.js-rutter som vi kommer att använda för att fråga informationen:

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

Antag att följande dokument finns i samlingen i modellen:

{
        "_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
}

Och målet är att hitta och visa alla dokument som innehåller "JavaScript is Awesome" under "request" -nyckeln.

För detta startar du MongoDB och kör server.js med node server.js :

Användande

För att använda detta för att hitta data, gå till följande URL i en webbläsare:

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

Där <query> är sökfrågan.

Exempel:

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

Produktion:

[{
    _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
}]

Hitta data i MongoDB med hjälp av Mongoose, Express.js-rutter och $ textoperatör

Uppstart

Först installerar du nödvändiga paket med:

npm install express cors mongoose

Koda

Lägg sedan till beroenden till server.js , skapa databasschemat och namnet på samlingen, skapa en Express.js-server och anslut till 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);
});

Lägg nu till Express.js-rutter som vi kommer att använda för att fråga informationen:

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

Antag att följande dokument finns i samlingen i modellen:

{
        "_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
}

Och att målet är att hitta och visa alla dokument som bara innehåller "JavaScript" -ord under "request" -nyckeln.

För att göra detta, skapar du först ett textindex för "request" i samlingen. För detta lägger du till följande kod i server.js :

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

Och ersätt:

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

Med:

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

Här använder vi $text och $search MongoDB-operatörer för att hitta alla dokument i samlingssamlingen collectionName som innehåller minst ett ord från den angivna sökfrågan.

Användande

För att använda detta för att hitta data, gå till följande URL i en webbläsare:

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

Där <query> är sökfrågan.

Exempel:

http://localhost:8080/find/JavaScript

Produktion:

[{
    _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
}]

Index i modeller.

MongoDB stöder sekundära index. I Mongoose definierar vi dessa index inom vårt schema. Att definiera index på schemanivå är nödvändigt när vi behöver skapa sammansatta index.

Mongoose Connection

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

Skapa ett grundläggande schema

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;

Som standard lägger mongoose till två nya fält i vår modell, även om de inte definieras i modellen. Dessa fält är:

_id

Mongoose tilldelar varje schema ett _id-fält som standard om ett inte skickas in i Schema-konstruktören. Den tilldelade typen är en ObjectId som sammanfaller med MongoDBs standardbeteende. Om du inte vill att ett _id läggs till i ditt schema alls, kan du inaktivera det med det här alternativet.

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

__v eller versionKey

VersionKey är en egenskap som är inställd på varje dokument när den först skapades av Mongoose. Detta nyckelvärde innehåller den interna revisionen av dokumentet. Namnet på denna dokumentegenskap kan konfigureras.

Du kan enkelt inaktivera det här fältet i modellkonfigurationen:

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

Compound index

Vi kan skapa ytterligare index utöver de som Mongoose skapar.

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

I dessa fall har vår modell ytterligare två index, en för fältets användarnamn och en annan för e-postfält. Men vi kan skapa sammansatta index.

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

Inverkan på indexets prestanda

Som standard ringer mongoose alltid versekerIndex för varje index i följd och avger en "index" -händelse på modellen när alla sikreIndex-samtal lyckades eller när det uppstod ett fel.

I MongoDB försvåras att InIndex avskrivs sedan version 3.0.0, nu är ett alias för createIndex.

Rekommenderas inaktivera beteendet genom att ställa in autoIndex-alternativet för ditt schema till falskt, eller globalt på anslutningen genom att ställa in alternativet config.autoIndex till falsk.

usersSchema.set('autoIndex', false);

Användbara Mongoose-funktioner

Mongoose innehåller några inbyggda funktioner som bygger på standardfyndet 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
});

hitta data i mongodb med löften

Uppstart

Först installerar du nödvändiga paket med:

npm install express cors mongoose

Koda

Lägg sedan till beroenden till server.js , skapa databasschemat och namnet på samlingen, skapa en Express.js-server och anslut till 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!');
});

Lägg nu till Express.js-rutter som vi kommer att använda för att fråga informationen:

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

Antag att följande dokument finns i samlingen i modellen:

{
        "_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
}

Och målet är att hitta och visa alla dokument som innehåller "JavaScript is Awesome" under "request" -nyckeln.

För detta startar du MongoDB och kör server.js med node server.js :

Användande

För att använda detta för att hitta data, gå till följande URL i en webbläsare:

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

Där <query> är sökfrågan.

Exempel:

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

Produktion:

[{
    _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
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow