Python MongoDB 検索

MongoDBでは、findおよびfindOneメソッドを使用してコレクションのデータを検索します。

SELECT文がMySQLデータベースのテーブルからデータを検索するように。

一項目検索

MongoDBのコレクションからデータを選択するには、以下を使用できます find_one() 方法。

find_one() 方法は選択された最初の一致項を返します。

「customers」コレクションの最初のドキュメントを検索します:

import pymongo
myclient = pymongo.MongoClient("mongodb://localhost:27017/")
mydb = myclient["mydatabase"]
mycol = mydb["customers"]
x = mycol.find_one()
print(x)

インスタンスを実行

全て検索

MongoDBからデータを選択するには、以下を使用できます find() 方法。

find() 方法は選択されたすべての一致項を返します。

find() 方法の最初の引数はqueryオブジェクトです。この例では、空のqueryオブジェクトを使用し、コレクションのすべてのドキュメントを選択します。

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)

インスタンスを実行

特定のフィールドのみを返します

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 の値を同時に指定することは許可されていません(_id フィールドが一方の場合を除きます)。0 の値が指定されたフィールドがある場合、他のすべてのフィールドの値は 1 になりますが、その逆も然りです:

この例では、結果から "address" を除外しています:

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 の値を同時に指定すると、エラーが発生します(_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)