수색…


몽구스를 사용하여 MongoDB에 연결

먼저 다음과 같이 몽구스를 설치하십시오 :

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 사용하여 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!
});

Mongoose 및 Express.js 경로를 사용하여 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);
});

이제 데이터를 쓰는 데 사용할 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 변수는 들어오는 HTTP 요청의 <query> 매개 변수가 될 것이며, 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 사용하여 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"
}

Mongoose 및 Express.js 경로를 사용하여 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);
});

이제 데이터를 쿼리하는 데 사용할 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
}

그리고 목표는 "request" "JavaScript is Awesome" "request" 키 아래에 "JavaScript is Awesome" 포함 된 모든 문서를 찾아서 표시하는 것입니다.

이를 위해 MongoDB를 시작하고 server.js node 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
}]

Mongoose, Express.js 경로 및 $ 텍스트 연산자를 사용하여 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);
});

이제 데이터를 쿼리하는 데 사용할 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
}

그리고 그 목표는 "request" 키 아래에 "JavaScript" 단어만을 포함하는 모든 문서를 찾아서 표시하는 것입니다.

이렇게하려면 먼저 콜렉션에서 "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 연산자를 사용하여 지정된 find 쿼리의 단어가 하나 이상 포함 된 collectionName 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는 2 차 인덱스를 지원합니다. 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는 Schema 생성자에 전달되지 않는 경우 각 스키마에 기본적으로 _id 필드를 할당합니다. 할당 된 타입은 MongoDB의 기본 동작과 일치하는 ObjectId입니다. 스키마에 _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는 각 인덱스에 대해 항상 ensureIndex를 호출하고 모든 ensureIndex 호출이 성공하거나 오류가 발생했을 때 모델에서 'index'이벤트를 내 보냅니다.

MongoDB에서 ensureIndex는 3.0.0 버전부터 사용되지 않으며 이제는 createIndex의 별칭입니다.

config.autoIndex 옵션을 false로 설정하여 스키마의 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
}

그리고 목표는 "request" "JavaScript is Awesome" "request" 키 아래에 "JavaScript is Awesome" 포함 된 모든 문서를 찾아서 표시하는 것입니다.

이를 위해 MongoDB를 시작하고 server.js node 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