MongoDBクエリーの高度な操作(多条件クエリー、正規マッチングクエリーなど)
3396 ワード
MongoDBクエリーの高度な操作
文法の紹介
MongoDBクエリードキュメントはfind()メソッドを使用し、find()メソッドはすべてのクエリーされたドキュメントを非構造化で表示します.
AND条件とOR条件
MongoDBのfind()メソッドは複数のキーを入力でき、各キーはカンマで区切られ、SQLのAND条件を果たすことができます.
条件オペレータ
条件オペレータは、条件関係を処理してMongoDBから条件を満たすドキュメントデータをクエリーします.条件オペレータは次のようになります.より大きい:$gt より小さい:$lt 以上:$gte 以下:$lte
$typeオペレータ
$typeオペレータは、BSONタイプに基づいてコレクション内で一致するデータ型を取得します.MongoDBでクエリーを使用できるデータ型は次の表のとおりです.
を選択します.
$typeは数値を表します
説明
Double
1
64ビット浮動小数点数
String
2
文字列タイプ
Object
3
オブジェクトタイプ
Array
4
配列タイプ
Binary Data
5
バイナリデータ型
Objectid
7
オブジェクトidタイプ
Boolean
8
ブール型
Date
9
日付タイプ
Null
10
空の値または存在しないフィールドを表す
Regular Expression
11
正規表現のタイプ
JavaScript
13
JavaScriptコード
JavaScript (with scope)
15
役割ドメイン付きJavaScriptコード
32-bit integer
16
32ビット整数
Timestamp
17
タイムスタンプのタイプ
64-bit integer
18
64ビット整数
Min key
-1
最小キー
Max key
127
最大キー
次に、クエリー条件として$typeを使用します.
クエリでlimit()、skip()、sort()メソッドを使用する limit()メソッドは、クエリー条件に基づいて指定された数のドキュメントデータレコードを読み出すことを意味します. skip()メソッドは、指定された数のドキュメントデータをスキップし、その後、クエリー条件に従ってクエリーすることを意味します. sort()メソッドは、クエリーされたドキュメントデータを指定したフィールドに従って昇順または降順にソートし、フィールド値が1の場合は昇順、フィールド値が-1の場合は降順を指します. 次にlimit()とskip()メソッドを使用して例を挙げて説明します.
クエリで正規表現を使用
ここでは、正規表現について説明します.正規表現は、ある構文規則に合致する一連の文字列を記述し、一致させるために単一の文字列を使用します.
MongoDBで$regexオペレータを使用して、一致する文字列の正規表現言語を設定します.
文法の紹介
MongoDBクエリードキュメントはfind()メソッドを使用し、find()メソッドはすべてのクエリーされたドキュメントを非構造化で表示します.
-- 1.
db.collection.find(query, projection) --
db.collection.findOne(query, projection) --
-- query: , ,
-- projection: , , ( )
-- 1: users 18
db.users.find({age: 18})
-- 2. , pretty()
db.collection.find(query, projection).pretty()
AND条件とOR条件
MongoDBのfind()メソッドは複数のキーを入力でき、各キーはカンマで区切られ、SQLのAND条件を果たすことができます.
-- 1.AND
db.collection.find({key1:value1, key2:value2})
-- 1: users 18
db.users.find({age: 18, sex: 'girl'})
-- 2.OR
db.collection.find({
$or: [
{key1: value1},
{key2:value2}
]
})
-- 2: users 18
db.users.find({
$or: [
{age: 18},
{sex: 'girl'}
]
})
条件オペレータ
条件オペレータは、条件関係を処理してMongoDBから条件を満たすドキュメントデータをクエリーします.条件オペレータは次のようになります.
-- users 18
db.users.find({age : {$gt : 18}})
-- users 18
db.users.find({age : {$lt : 18}})
-- users 18
db.users.find({age : {$gte : 18}})
-- users 18
db.users.find({age : {$lte : 18}})
$typeオペレータ
$typeオペレータは、BSONタイプに基づいてコレクション内で一致するデータ型を取得します.MongoDBでクエリーを使用できるデータ型は次の表のとおりです.
を選択します.
$typeは数値を表します
説明
Double
1
64ビット浮動小数点数
String
2
文字列タイプ
Object
3
オブジェクトタイプ
Array
4
配列タイプ
Binary Data
5
バイナリデータ型
Objectid
7
オブジェクトidタイプ
Boolean
8
ブール型
Date
9
日付タイプ
Null
10
空の値または存在しないフィールドを表す
Regular Expression
11
正規表現のタイプ
JavaScript
13
JavaScriptコード
JavaScript (with scope)
15
役割ドメイン付きJavaScriptコード
32-bit integer
16
32ビット整数
Timestamp
17
タイムスタンプのタイプ
64-bit integer
18
64ビット整数
Min key
-1
最小キー
Max key
127
最大キー
次に、クエリー条件として$typeを使用します.
-- : users ,
db.users.find({"name" : {$type : 2}})
クエリでlimit()、skip()、sort()メソッドを使用する
-- (limit()、skip()、sort() )
db.collectionName.find().limit(NUMBER)
db.collectionName.find().skip(NUMBER)
db.collectionName.find().sort({"key": 1/-1})
-- 1: 50 users 100
db.users.find({"name" : {$type : 2}}).limit(100).skip(50)
-- 2: users
db.users.find({"name" : {$type : 2}}).sort({"name": 1})
クエリで正規表現を使用
ここでは、正規表現について説明します.正規表現は、ある構文規則に合致する一連の文字列を記述し、一致させるために単一の文字列を使用します.
MongoDBで$regexオペレータを使用して、一致する文字列の正規表現言語を設定します.
--
db.collectionName.find({key:{ $regex: regex, $options: options }})
-- : users web ( )
db.users.find({ "name" : { $regex : "web", $options: "i" } })
db.users.find({ "name" : /web/i } })