PythonMongoDB検索
MongoDBでは、findメソッドとfindOneメソッドを使用して、コレクション内のデータを検索します。
SELECTステートメントを使用してMySQLデータベースのテーブル内のデータを検索するのと同じです。
1つ見つける
MongoDBのコレクションからデータを選択するには、この
find_one()
メソッドを使用できます。
このfind_one()
メソッドは、選択範囲の最初のオカレンスを返します。
例
顧客コレクションの最初のドキュメントを検索します。
import pymongo
myclient = pymongo.MongoClient("mongodb://localhost:27017/")
mydb = myclient["mydatabase"]
mycol = mydb["customers"]
x = mycol.find_one()
print(x)
すべて検索
MongoDBのテーブルからデータを選択するには、この
find()
メソッドを使用することもできます。
このfind()
メソッドは、選択範囲内のすべてのオカレンスを返します。
メソッドの最初のパラメーターはfind()
クエリオブジェクトです。この例では、コレクション内のすべてのドキュメントを選択する空のクエリオブジェクトを使用します。
find()メソッドにパラメータがない場合、 MySQLのSELECT *と同じ結果が得られます。
例
「customers」コレクション内のすべてのドキュメントを返し、各ドキュメントを印刷します。
import pymongo
myclient = pymongo.MongoClient("mongodb://localhost:27017/")
mydb = myclient["mydatabase"]
mycol = mydb["customers"]
for x in mycol.find():
print(x)
一部のフィールドのみを返す
メソッドの2番目のパラメーターはfind()
、結果に含めるフィールドを記述するオブジェクトです。
このパラメーターはオプションであり、省略した場合、すべてのフィールドが結果に含まれます。
例
_idsではなく、名前とアドレスのみを返します。
import pymongo
myclient = pymongo.MongoClient("mongodb://localhost:27017/")
mydb = myclient["mydatabase"]
mycol = mydb["customers"]
for x in mycol.find({},{ "_id": 0, "name": 1, "address": 1 }):
print(x)
同じオブジェクトに0と1の両方の値を指定することはできません(フィールドの1つが_idフィールドである場合を除く)。値が0のフィールドを指定すると、他のすべてのフィールドは値1を取得し、その逆も同様です。
例
この例では、結果から「アドレス」を除外します。
import pymongo
myclient = pymongo.MongoClient("mongodb://localhost:27017/")
mydb = myclient["mydatabase"]
mycol = mydb["customers"]
for x in mycol.find({},{ "address": 0 }):
print(x)
例
同じオブジェクトに0と1の両方の値を指定すると、エラーが発生します(フィールドの1つが_idフィールドである場合を除く)。
import pymongo
myclient = pymongo.MongoClient("mongodb://localhost:27017/")
mydb = myclient["mydatabase"]
mycol = mydb["customers"]
for x in mycol.find({},{ "name": 1, "address": 0 }):
print(x)