サーチ…


Mongooseを使ってMongoDBに接続する

まず、Mongooseを以下のものとともにインストールします。

npm install mongoose

次に、それを依存関係としてserver.jsに追加し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を使用してserver.jsを実行しnode server.js

我々はデータベースに正常に接続しているかどうかを確認するために、我々は、イベントを使用することができopenerrorから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

使用法

これを使用してデータを保存するには、ブラウザの次の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"を含むすべての文書を見つけて表示することです。

このためには、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ルートと$ text演算子を使用して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演算子を使用してコレクションcollectionName内の、指定された検索クエリから少なくとも1つの単語を含むすべてのドキュメントを検索します。

使用法

これを使用してデータを検索するには、ブラウザの次の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では、これらのインデックスをスキーマ内で定義します。複合インデックスを作成する必要がある場合は、スキーマレベルでインデックスを定義する必要があります。

マングースコネクション

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はモデルに定義されていない2つの新しいフィールドをモデルに追加します。これらのフィールドは次のとおりです。

_id

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

このような場合、私たちのモデルには2つのインデックスがあります.1つはフィールドユーザー名用で、もう1つは電子メールフィールド用です。しかし、複合インデックスを作成することは可能です。

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

パフォーマンスの影響をインデックス化する

デフォルトでは、すべてのensureIndex呼び出しが成功したとき、またはエラーがあったときに、常に各インデックスのensureIndexを常に呼び出して、モデルの 'index'イベントを出します。

MongoDBでは、ensureIndexはバージョン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
}

そして、目的は、 "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