MongoDBクエリーの高度な操作(多条件クエリー、正規マッチングクエリーなど)


MongoDBクエリーの高度な操作
文法の紹介
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から条件を満たすドキュメントデータをクエリーします.条件オペレータは次のようになります.
  • より大きい:$gt
  • より小さい:$lt
  • 以上:$gte
  • 以下:$lte
  • --   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()メソッドは、クエリーされたドキュメントデータを指定したフィールドに従って昇順または降順にソートし、フィールド値が1の場合は昇順、フィールド値が-1の場合は降順を指します.
  • 次にlimit()とskip()メソッドを使用して例を挙げて説明します.
    --     (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 } })