Поиск…


Подключение к MongoDB Использование Mongoose

Во-первых, установите Mongoose с:

npm install mongoose

Затем добавьте его в server.js как зависимости:

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

Затем создайте схему базы данных и имя коллекции:

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

Создайте модель и подключитесь к базе данных:

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

Затем запустите MongoDB и запустите server.js используя node server.js

Чтобы проверить, успешно ли мы подключены к базе данных, мы можем использовать open события, error из объекта mongoose.connection .

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

Сохранение данных в MongoDB с использованием маршрутов Mongoose и Express.js

Настроить

Сначала установите необходимые пакеты с помощью:

npm install express cors mongoose

Код

Затем добавьте зависимости к файлу server.js , создайте схему базы данных и имя коллекции, создайте сервер Express.js и подключитесь к 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);
});

Теперь добавьте маршруты Express.js, которые мы будем использовать для записи данных:

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

Здесь переменная query будет параметром <query> из входящего HTTP-запроса, который будет сохранен в MongoDB:

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

Если при попытке записи в MongoDB возникает ошибка, вы получите сообщение об ошибке на консоли. Если все будет успешным, вы увидите сохраненные данные в формате JSON на странице.

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

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

Теперь вам нужно запустить MongoDB и запустить файл server.js используя node server.js .

использование

Чтобы использовать это для сохранения данных, перейдите к следующему URL-адресу в своем браузере:

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

Где <query> - новый запрос, который вы хотите сохранить.

Пример:

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

Выход в формате JSON:

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

Поиск данных в MongoDB Использование маршрутов Mongoose и Express.js

Настроить

Сначала установите необходимые пакеты с помощью:

npm install express cors mongoose

Код

Затем добавьте зависимости к server.js , создайте схему базы данных и имя коллекции, создайте сервер Express.js и подключитесь к 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);
});

Теперь добавьте маршруты Express.js, которые мы будем использовать для запроса данных:

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

Предположим, что следующие документы находятся в коллекции в модели:

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

И цель состоит в том, чтобы найти и отобразить все документы, содержащие "JavaScript is Awesome" под ключом "request" .

Для этого запустите MongoDB и запустите server.js с node server.js :

использование

Чтобы использовать это для поиска данных, перейдите по следующему URL-адресу в браузере:

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

Где <query> - поисковый запрос.

Пример:

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

Выход:

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

Поиск данных в MongoDB Использование маршрутов Mongoose, Express.js и $ text Operator

Настроить

Сначала установите необходимые пакеты с помощью:

npm install express cors mongoose

Код

Затем добавьте зависимости к server.js , создайте схему базы данных и имя коллекции, создайте сервер Express.js и подключитесь к 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);
});

Теперь добавьте маршруты Express.js, которые мы будем использовать для запроса данных:

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

Предположим, что следующие документы находятся в коллекции в модели:

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

И цель состоит в том, чтобы найти и отобразить все документы, содержащие только слово "JavaScript" под ключом "request" .

Для этого сначала создайте текстовый индекс для "request" в коллекции. Для этого добавьте следующий код в server.js :

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

И замените:

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

С:

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

Здесь мы используем $text и $search MongoDB-операторы для поиска всех документов в коллекции collectionName которое содержит хотя бы одно слово из указанного запроса на поиск.

использование

Чтобы использовать это для поиска данных, перейдите по следующему URL-адресу в браузере:

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

Где <query> - поисковый запрос.

Пример:

http://localhost:8080/find/JavaScript

Выход:

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

Индексы в моделях.

MongoDB поддерживает вторичные индексы. В Mongoose мы определяем эти индексы в нашей схеме. Определение индексов на уровне схемы необходимо, когда нам нужно создавать составные индексы.

Соединение Mongoose

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

Создание базовой схемы

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;

По умолчанию mongoose добавляет два новых поля в нашу модель, даже если они не определены в модели. Эти поля:

_Я бы

Mongoose присваивает каждой из ваших схем поле _id по умолчанию, если он не передается в конструктор схемы. Назначенный тип - ObjectId, который совпадает с поведением MongoDB по умолчанию. Если вы не хотите, чтобы _id добавили в вашу схему вообще, вы можете отключить ее, используя эту опцию.

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

__v или versionKey

VersionKey - это свойство, установленное для каждого документа при первом создании Mongoose. Это значение ключа содержит внутреннюю ревизию документа. Имя этого свойства документа настраивается.

Вы можете легко отключить это поле в конфигурации модели:

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

Составные индексы

Мы можем создать еще один индекс, помимо того, что создает Mongoose.

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

В этом случае наша модель имеет еще два индекса: один для имени пользователя поля и другой для поля электронной почты. Но мы можем создавать составные индексы.

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

Влияние производительности индекса

По умолчанию mongoose всегда вызывает makeIndex для каждого индекса последовательно и генерирует событие «index» на модели, когда все вызовы secureIndex преуспели или когда произошла ошибка.

В MongoDB securityIndex устарел с версии 3.0.0, теперь является псевдонимом для createIndex.

Рекомендуется отключить поведение, установив для параметра autoIndex вашей схемы значение false или глобально на соединение, установив опцию config.autoIndex равным false.

usersSchema.set('autoIndex', false);

Полезные функции Мангуста

Mongoose содержит некоторые встроенные функции, которые основаны на стандартном 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
});

найти данные в mongodb, используя обещания

Настроить

Сначала установите необходимые пакеты с помощью:

npm install express cors mongoose

Код

Затем добавьте зависимости к server.js , создайте схему базы данных и имя коллекции, создайте сервер Express.js и подключитесь к 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!');
});

Теперь добавьте маршруты Express.js, которые мы будем использовать для запроса данных:

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

Предположим, что следующие документы находятся в коллекции в модели:

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

И цель состоит в том, чтобы найти и отобразить все документы, содержащие "JavaScript is Awesome" под ключом "request" .

Для этого запустите MongoDB и запустите server.js с node server.js :

использование

Чтобы использовать это для поиска данных, перейдите по следующему URL-адресу в браузере:

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

Где <query> - поисковый запрос.

Пример:

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

Выход:

[{
    _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
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow