クエリー演算子


この投稿はpymongoに基づいて作成されます.

1.クエリの構造

{ <field> : {<operator1> : <value>, <operator2> : <value>}...}
デフォルトでは、フィールド名は最も外側で、対応する演算子が含まれています.
{"height" : {"$gte" : 175, "$lte" : 180}, "width" : {"$gte":60}}
ただし、一部の演算子は例外です.$or、$and、$norを表す
{"$or":[{"status":"A"},{"qty":{"$lt":30}}]}

2.ポイントマーク法


ポイントマーク法はBSON内部オブジェクトdpにアクセスする方法である.
{
"name" : {"first" : "kim", "last" : "soo min"
}

# name 안의 first 값을 조회하기 위해서는 다음과 같이 사용한다.

collection.find({"name.first" : "kim"})
最初の要素を配置するnews値を持つドキュメントを探している場合は、次の操作を行います.

{
"groups : ["news","sports"]
}

collection.find({"groups.0" : "news"})

3.比較演算子


オペレータは、$eq(等しい)が所与の値と一致する値$gt(より大きい)が所与の値$gte(より大きいまたは等しい)が所与の値$gte(より小さいまたは等しい)が所与の値$lte(より小さいまたは等しい)より小さいまたは所与の値$ne(等しくない)より小さいことを説明する.与えられた値と一致しない値$inが与えられた配列に属する値$nnが与えられた配列に属さない値

検索数が10または30以下の図
articles.find({"likes":{"$gte" : 10 , "$lte": 30}})

4.論理演算子


オペレータは、$orが与えられた条件の1つがtrueである場合にtrue$andであり、与えられたすべての条件がtrueである場合にtrue$norであり、与えられた条件の1つがfalseである場合にtrue$notであり、与えられた条件がfalseである場合にtrueであることを説明する.

記事のタイトルはarticle 01または著者がAlphaのドキュメント
articles.find({"$or" : [{"title" : "article01"}, {"writed" : "Alpha"}]})
演算子と使うことは多くありません.
次の2つのクエリは同じ意味です.
inventory.find({"$and" : [
{"qty":{"$gt":10}},
{"qty":{"$lt":100}}
]})


inventory.find({"qty":{"$gt":10,"$lt":100}})

5.文字列演算子


オペレータは、$modがmodulo操作によって特定の結果を生成するDocumentを選択することを説明します.$regex固有の正規表現と一致するDocumentを選択します.$テキスト文字列検索を実行する機能.$where JavaScriptとして適切なDocumentを選択します.
$textは、各セットに1つの文字列インデックスしか作成できない場合にのみ動作します.
文字列インデックスの設定方法
collection.create_index([('field', pymongo.TEXT)], default_language = 'english')

6.配列演算子


オペレータは、$all配列内のすべての要素が含まれている場合に選択することを示します.$elemMatch$elemMatch条件に一致する配列内の要素のDocumentを選択します.$size同じ配列サイズのDocumentを選択します.
  • $all演算子は、配列内のすべての値を含むDocumentを検索します.
  • items.find({"tags": {"$all":["book","appliance"]}})
  • $elemMatch演算子は、すべてのフィールドのクエリー値を満たすドキュメントを検索します.
  • score.find({"results": {"$elemMatch":{"$gte":80, "$lt":85}}})
  • $size演算子は、このフィールドがすべてのクエリー値を満たすドキュメントを検索します.
  • score.find({"results":{"$size":3}})