Запрос Python MongoDB
Отфильтровать результат
При поиске документов в коллекции вы можете отфильтровать результат с помощью объекта запроса.
Первый аргумент find()
метода является объектом запроса и используется для ограничения поиска.
Пример
Найдите документ(ы) с адресом "Park Lane 38":
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"}
:
Пример
Найдите документы, где адрес начинается с буквы «С»:
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)