Recherche…


Connectez-vous à MongoDB en utilisant Mongoose

Tout d'abord, installez Mongoose avec:

npm install mongoose

Ensuite, ajoutez-le à server.js tant que dépendances:

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

Ensuite, créez le schéma de base de données et le nom de la collection:

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

Créez un modèle et connectez-vous à la base de données:

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

Ensuite, démarrez MongoDB et exécutez server.js utilisant node server.js

Pour vérifier si nous avons réussi à nous connecter à la base de données, nous pouvons utiliser les événements open , error de l'objet mongoose.connection .

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

Enregistrer les données sur MongoDB en utilisant les routes Mongoose et Express.js

Installer

D'abord, installez les paquets nécessaires avec:

npm install express cors mongoose

Code

Ensuite, ajoutez des dépendances à votre fichier server.js , créez le schéma de base de données et le nom de la collection, créez un serveur Express.js et connectez-vous à 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);
});

Ajoutez maintenant les routes Express.js que nous utiliserons pour écrire les données:

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

Ici, la variable de query sera le paramètre <query> de la requête HTTP entrante, qui sera enregistrée dans MongoDB:

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

Si une erreur survient lors de la tentative d'écriture sur MongoDB, vous recevrez un message d'erreur sur la console. Si tout est réussi, vous verrez les données enregistrées au format JSON sur la page.

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

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

Maintenant, vous devez démarrer MongoDB et exécuter votre fichier server.js en utilisant node server.js .

Usage

Pour l'utiliser pour enregistrer des données, accédez à l'URL suivante dans votre navigateur:

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

<query> est la nouvelle requête que vous souhaitez enregistrer.

Exemple:

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

Sortie au format JSON:

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

Rechercher des données dans MongoDB en utilisant les routes Mongoose et Express.js

Installer

D'abord, installez les paquets nécessaires avec:

npm install express cors mongoose

Code

Ensuite, ajoutez des dépendances à server.js , créez le schéma de base de données et le nom de la collection, créez un serveur Express.js et connectez-vous à 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);
});

Ajoutez maintenant les routes Express.js que nous utiliserons pour interroger les données:

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

Supposons que les documents suivants figurent dans la collection du modèle:

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

Et le but est de trouver et d’afficher tous les documents contenant "JavaScript is Awesome" sous la clé "request" .

Pour cela, démarrez MongoDB et exécutez server.js avec node server.js :

Usage

Pour l'utiliser pour rechercher des données, accédez à l'URL suivante dans un navigateur:

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

<query> est la requête de recherche.

Exemple:

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

Sortie:

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

Recherche de données dans MongoDB à l'aide de Mongoose, Express.js Routes et $ text Operator

Installer

D'abord, installez les paquets nécessaires avec:

npm install express cors mongoose

Code

Ensuite, ajoutez des dépendances à server.js , créez le schéma de base de données et le nom de la collection, créez un serveur Express.js et connectez-vous à 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);
});

Ajoutez maintenant les routes Express.js que nous utiliserons pour interroger les données:

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

Supposons que les documents suivants figurent dans la collection du modèle:

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

Et que le but est de trouver et d’afficher tous les documents ne contenant que le mot "JavaScript" sous la clé "request" .

Pour ce faire, créez d'abord un index de texte pour "request" dans la collection. Pour cela, ajoutez le code suivant à server.js :

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

Et remplacer:

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

Avec:

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

Ici, nous utilisons $search opérateurs $text et $search MongoDB pour rechercher tous les documents de la collection collectionName qui contient au moins un mot de la requête de recherche spécifiée.

Usage

Pour l'utiliser pour rechercher des données, accédez à l'URL suivante dans un navigateur:

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

<query> est la requête de recherche.

Exemple:

http://localhost:8080/find/JavaScript

Sortie:

[{
    _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 dans les modèles.

MongoDB prend en charge les index secondaires. Dans Mongoose, nous définissons ces index dans notre schéma. La définition d'index au niveau du schéma est nécessaire lorsque vous devez créer des index composés.

Connexion Mongoose

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

Créer un schéma de base

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;

Par défaut, mongoose ajoute deux nouveaux champs à notre modèle, même s'ils ne sont pas définis dans le modèle. Ces champs sont:

_id

Mongoose attribue à chacun de vos schémas un champ _id par défaut si l'un d'entre eux n'est pas transmis au constructeur de schéma. Le type attribué est un ObjectId qui coïncide avec le comportement par défaut de MongoDB. Si vous ne voulez pas ajouter d'id à votre schéma, vous pouvez le désactiver en utilisant cette option.

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

__v ou versionKey

La versionKey est une propriété définie sur chaque document lors de sa création par Mongoose. Cette valeur de clé contient la révision interne du document. Le nom de cette propriété de document est configurable.

Vous pouvez facilement désactiver ce champ dans la configuration du modèle:

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

Index composés

Nous pouvons créer d’autres index que ceux créés par Mongoose.

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

Dans ce cas, notre modèle a deux autres index, un pour le nom d'utilisateur du champ et un autre pour le champ email. Mais nous pouvons créer des index composés.

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

Impact sur la performance de l'index

Par défaut, mongoose appelle toujours séquentiellement assureIndex pour chaque index et émet un événement 'index' sur le modèle lorsque tous les appels à efficientIndex ont abouti ou en cas d'erreur.

Dans MongoDB EnsureIndex est obsolète depuis la version 3.0.0, est maintenant un alias pour createIndex.

Il est recommandé de désactiver le comportement en définissant l'option autoIndex de votre schéma sur false ou globalement sur la connexion en définissant l'option config.autoIndex sur false.

usersSchema.set('autoIndex', false);

Fonctions utiles de Mongoose

Mongoose contient des fonctions intégrées basées sur 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
});

trouver des données dans mongodb en utilisant des promesses

Installer

D'abord, installez les paquets nécessaires avec:

npm install express cors mongoose

Code

Ensuite, ajoutez des dépendances à server.js , créez le schéma de base de données et le nom de la collection, créez un serveur Express.js et connectez-vous à 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!');
});

Ajoutez maintenant les routes Express.js que nous utiliserons pour interroger les données:

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

Supposons que les documents suivants figurent dans la collection du modèle:

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

Et le but est de trouver et d’afficher tous les documents contenant "JavaScript is Awesome" sous la clé "request" .

Pour cela, démarrez MongoDB et exécutez server.js avec node server.js :

Usage

Pour l'utiliser pour rechercher des données, accédez à l'URL suivante dans un navigateur:

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

<query> est la requête de recherche.

Exemple:

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

Sortie:

[{
    _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
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow