Node.jsMongoDB検索_
MongoDBでは、findメソッドとfindOneメソッドを使用して、コレクション内のデータを検索します。
SELECTステートメントを使用してMySQLデータベースのテーブル内のデータを検索するのと同じです。
1つ見つける
MongoDBのコレクションからデータを選択するには、この
findOne()
メソッドを使用できます。
このfindOne()
メソッドは、選択範囲の最初のオカレンスを返します。
メソッドの最初のパラメーターはfindOne()
クエリオブジェクトです。この例では、コレクション内のすべてのドキュメントを選択する空のクエリオブジェクトを使用します(ただし、最初のドキュメントのみを返します)。
例
顧客コレクションの最初のドキュメントを検索します。
var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://localhost:27017/";
MongoClient.connect(url, function(err, db) {
if (err) throw err;
var dbo = db.db("mydb");
dbo.collection("customers").findOne({}, function(err, result) {
if (err) throw err;
console.log(result.name);
db.close();
});
});
上記のコードを「demo_mongodb_findone.js」というファイルに保存し、ファイルを実行します。
「demo_mongodb_findone.js」を実行します
C:\Users\Your Name>node demo_mongodb_findone.js
これはあなたにこの結果を与えるでしょう:
Company Inc.
すべて検索
MongoDBのテーブルからデータを選択するには、この
find()
メソッドを使用することもできます。
このfind()
メソッドは、選択範囲内のすべてのオカレンスを返します。
メソッドの最初のパラメーターはfind()
クエリオブジェクトです。この例では、コレクション内のすべてのドキュメントを選択する空のクエリオブジェクトを使用します。
find()メソッドにパラメータがない場合、 MySQLのSELECT *と同じ結果が得られます。
例
顧客コレクション内のすべてのドキュメントを検索します。
var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://localhost:27017/";
MongoClient.connect(url, function(err, db) {
if (err) throw err;
var dbo = db.db("mydb");
dbo.collection("customers").find({}).toArray(function(err, result) {
if (err) throw err;
console.log(result);
db.close();
});
});
上記のコードを「demo_mongodb_find.js」というファイルに保存し、ファイルを実行します。
「demo_mongodb_find.js」を実行します
C:\Users\Your Name>node demo_mongodb_find.js
これはあなたにこの結果を与えるでしょう:
[
{ _id:
58fdbf5c0ef8a50b4cdd9a84 , name: 'John', address: 'Highway 71'},
{ _id:
58fdbf5c0ef8a50b4cdd9a85 , name: 'Peter', address: 'Lowstreet 4'},
{
_id: 58fdbf5c0ef8a50b4cdd9a86 , name: 'Amy',
address: 'Apple st 652'},
{ _id: 58fdbf5c0ef8a50b4cdd9a87 , name: 'Hannah', address:
'Mountain 21'},
{ _id: 58fdbf5c0ef8a50b4cdd9a88 , name: 'Michael', address: 'Valley 345'},
{ _id: 58fdbf5c0ef8a50b4cdd9a89 , name: 'Sandy', address: 'Ocean blvd 2'},
{
_id: 58fdbf5c0ef8a50b4cdd9a8a ,
name: 'Betty', address: 'Green Grass 1'},
{ _id:
58fdbf5c0ef8a50b4cdd9a8b , name: 'Richard',
address: 'Sky st 331'},
{ _id: 58fdbf5c0ef8a50b4cdd9a8c , name: 'Susan', address: 'One way
98'},
{ _id: 58fdbf5c0ef8a50b4cdd9a8d , name: 'Vicky', address: 'Yellow Garden 2'},
{ _id: 58fdbf5c0ef8a50b4cdd9a8e , name: 'Ben', address: 'Park Lane 38'},
{
_id: 58fdbf5c0ef8a50b4cdd9a8f , name: 'William',
address: 'Central st 954'},
{ _id: 58fdbf5c0ef8a50b4cdd9a90 , name: 'Chuck', address:
'Main Road 989'},
{ _id: 58fdbf5c0ef8a50b4cdd9a91 , name: 'Viola', address: 'Sideway
1633'}
]
いくつか見つける
find()
メソッドの2番目のパラメーターはprojection
、結果に含めるフィールドを記述するオブジェクトです。
このパラメーターはオプションであり、省略した場合、すべてのフィールドが結果に含まれます。
例
顧客コレクション内のすべてのドキュメントのフィールド「名前」と「アドレス」を返します。
var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://localhost:27017/";
MongoClient.connect(url, function(err, db) {
if (err) throw err;
var dbo = db.db("mydb");
dbo.collection("customers").find({}, { projection: { _id: 0, name: 1, address:
1 } }).toArray(function(err, result) {
if (err) throw err;
console.log(result);
db.close();
});
});
上記のコードを「demo_mongodb_find_fields.js」というファイルに保存し、ファイルを実行します。
「demo_mongodb_find_fields.js」を実行します
C:\Users\Your Name>node demo_mongodb_find_fields.js
これはあなたにこの結果を与えるでしょう:
[
{ name: 'John', address: 'Highway 71'},
{ name: 'Peter', address: 'Lowstreet 4'},
{
name: 'Amy',
address: 'Apple st 652'},
{ name: 'Hannah', address:
'Mountain 21'},
{ name: 'Michael', address: 'Valley 345'},
{ name: 'Sandy', address: 'Ocean blvd 2'},
{
name: 'Betty', address: 'Green Grass 1'},
{ name: 'Richard',
address: 'Sky st 331'},
{ name: 'Susan', address: 'One way
98'},
{ name: 'Vicky', address: 'Yellow Garden 2'},
{ name: 'Ben', address: 'Park Lane 38'},
{
name: 'William',
address: 'Central st 954'},
{ name: 'Chuck', address:
'Main Road 989'},
{ name: 'Viola', address: 'Sideway
1633'}
]
同じオブジェクトに0と1の両方の値を指定することはできません(フィールドの1つが_idフィールドである場合を除く)。値が0のフィールドを指定すると、他のすべてのフィールドは値1を取得し、その逆も同様です。
例
この例では、結果から「アドレス」を除外します。
var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://localhost:27017/";
MongoClient.connect(url, function(err, db) {
if (err) throw err;
var dbo = db.db("mydb");
dbo.collection("customers").find({}, { projection: { address: 0
} }).toArray(function(err, result) {
if (err) throw err;
console.log(result);
db.close();
});
});
_idフィールドを除外するには、その値を0に設定する必要があります。
例
この例では、「名前」フィールドのみが返されます。
var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://localhost:27017/";
MongoClient.connect(url, function(err, db) {
if (err) throw err;
var dbo = db.db("mydb");
dbo.collection("customers").find({}, { projection: { _id: 0, name: 1
} }).toArray(function(err, result) {
if (err) throw err;
console.log(result);
db.close();
});
});
例
この例では、最初の例と同じ結果が得られます。_idフィールドを除くすべてのフィールドを返します。
var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://localhost:27017/";
MongoClient.connect(url, function(err, db) {
if (err) throw err;
var dbo = db.db("mydb");
dbo.collection("customers").find({}, { projection: { _id: 0
} }).toArray(function(err, result) {
if (err) throw err;
console.log(result);
db.close();
});
});
例
同じオブジェクトに0と1の両方の値を指定すると、エラーが発生します(フィールドの1つが_idフィールドである場合を除く)。
var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://localhost:27017/";
MongoClient.connect(url, function(err, db) {
if (err) throw err;
var dbo = db.db("mydb");
dbo.collection("customers").find({}, { projection: { name: 1, address: 0
} }).toArray(function(err, result) {
if (err) throw err;
console.log(result);
db.close();
});
});
結果オブジェクト
上記の例の結果からわかるように、結果は、各ドキュメントをオブジェクトとして含む配列に変換できます。
たとえば、3番目のドキュメントのアドレスを返すには、3番目の配列オブジェクトのaddressプロパティを参照します。
例
3番目のドキュメントのアドレスを返します。
console.log(result[2].address);
これにより、次の結果が得られます。
Apple st 652