MongoDB(10) - 検索編(3回目)

今回はAND条件やOR条件を指定しての検索を行います。

サンプルデータ

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

nameage
岡田30
山岡35
鈴木24

AND条件検索

AND条件で検索する場合は、$andを使います。

$andに検索条件を配列で指定します。検索条件は2つ以上指定できます。

[Mongoシェル]

1
2
3
4
5
6
> db.col1.find({$and:[
{name:"岡田"},
{age:{$gte:25}}
]
})
{ "_id" : ObjectId("6120958fdee0a016235653f8"), "name" : "岡田", "age" : 30 }

OR条件検索

OR条件で検索する場合は、$orを使います。

$orに検索条件を配列で指定します。検索条件は2つ以上指定できます。

[Mongoシェル]

1
2
3
4
5
6
7
> db.col1.find({$or:[
{name:"岡田"},
{age:{$gte:25}}
]
})
{ "_id" : ObjectId("6120958fdee0a016235653f8"), "name" : "岡田", "age" : 30 }
{ "_id" : ObjectId("6120958fdee0a016235653f9"), "name" : "山岡", "age" : 35 }

Pythonで操作

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

[ソースコード]

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

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

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

# AND条件検索
for doc in db1.col1.find({'$and': [{'name':'岡田'}, {'age':{'$gte':25}}] }):
print(doc)

# OR条件検索
for doc in db1.col1.find({'$or': [{'name':'岡田'}, {'age':{'$gte':25}}] }):
print(doc)

次回は空文字/Null/フィールドなし/undefinedに関する検索を行います。