MongoDB(8) - 検索編

今回から検索に関する動作を確認していきます。

サンプルデータ

次のようなデータがcol1コレクションに設定されています。

nameage
岡田30
山岡35
鈴木24

全件検索・全フィールド表示

もっともシンプルな全件検索、全フィールド表示を行います。

(find関数に引数を設定しません)

[Mongoシェル]

1
2
3
4
> db.col1.find()
{ "_id" : ObjectId("611f72364894370583f311e6"), "name" : "岡田", "age" : 30 }
{ "_id" : ObjectId("611f72364894370583f311e7"), "name" : "山岡", "age" : 35 }
{ "_id" : ObjectId("611f72364894370583f311e8"), "name" : "鈴木", "age" : 24 }

全件検索・フィールド表示/非表示

全件検索は同じで、表示するフィールドを指定してみます。

[Mongoシェル]

1
2
3
4
5
6
7
8
9
10
11
# _idフィールドを非表示
> db.col1.find({},{_id:0})
{ "name" : "岡田", "age" : 30 }
{ "name" : "山岡", "age" : 35 }
{ "name" : "鈴木", "age" : 24 }

# _idフィールドを非表示にし、nameフィールドを表示する
> db.col1.find({},{_id:0,name:1})
{ "name" : "岡田" }
{ "name" : "山岡" }
{ "name" : "鈴木" }

find関数に指定している引数の意味は次の通りです。

  • 第1引数
    検索条件を指定します。カラの場合は全てのドキュメントを表示します。
  • 第2引数
    表示するフィールドを指定します。
    表示するフィールドの場合は1、表示しないフィールドの場合は0を指定します。

Pythonで操作

上記の操作をPythonで行うと、次のようになります。

[ソースコード]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
from pymongo import MongoClient

# MongoDB操作用のインスタンスを作成
client = MongoClient() # [IPとポートを指定する場合] MongoClient('10.200.243.203', 27017')

# データベースの取得
db1 = client.db1

# 全件表示
for doc in db1.col1.find():
print(doc)

# _idフィールドを非表示
for doc in db1.col1.find({},{'_id':0}):
print(doc)

# _idフィールドを非表示にし、nameフィールドを表示する
for doc in db1.col1.find({},{'_id':0, 'name':1}):
print(doc)

次回は条件(完全一致、部分一致)を指定して、検索の動作確認を行います。