PythonMongoDBクエリ
結果をフィルタリングする
コレクション内のドキュメントを検索する場合、クエリオブジェクトを使用して結果をフィルタリングできます。
メソッドの最初の引数はfind()
クエリオブジェクトであり、検索を制限するために使用されます。
例
アドレスが「ParkLane38」のドキュメントを検索します。
import pymongo
myclient = pymongo.MongoClient("mongodb://localhost:27017/")
mydb = myclient["mydatabase"]
mycol = mydb["customers"]
myquery = { "address": "Park Lane 38" }
mydoc = mycol.find(myquery)
for x in mydoc:
print(x)
高度なクエリ
高度なクエリを作成するには、クエリオブジェクトの値として修飾子を使用できます。
たとえば、「アドレス」フィールドが文字「S」以上(アルファベット順)で始まるドキュメントを検索するには、より大きい修飾子を使用します
{"$gt": "S"}
。
例
アドレスが文字「S」以上で始まるドキュメントを検索します。
import pymongo
myclient = pymongo.MongoClient("mongodb://localhost:27017/")
mydb = myclient["mydatabase"]
mycol = mydb["customers"]
myquery = { "address": { "$gt": "S" } }
mydoc = mycol.find(myquery)
for x in mydoc:
print(x)
正規表現を使用したフィルター
正規表現を修飾子として使用することもできます。
正規表現は、文字列のクエリにのみ使用できます。
「アドレス」フィールドが文字「S」で始まるドキュメントのみを検索するには、正規表現を使用します{"$regex": "^S"}
。
例
アドレスが文字「S」で始まるドキュメントを検索します。
import pymongo
myclient = pymongo.MongoClient("mongodb://localhost:27017/")
mydb = myclient["mydatabase"]
mycol = mydb["customers"]
myquery = { "address": { "$regex": "^S" } }
mydoc = mycol.find(myquery)
for x in mydoc:
print(x)