MongoDB Syntax’ını PyMongo ile Kullanmak

Merhaba,

Bazen MongoDB’de bir collection üzerinde sorgulama yapmak istediğimiz zaman aynı sorguyu PyMongo kütüphanesi ile de kullanmak isteyebiliriz.

Dilerseniz aşağıdaki basit örneği beraber inceleyelim. MongoDB sorgulamaları için ücretsiz bir araç olan Robo 3T kullanıyoruz.

Diyelim ki Telemetry adında bir collection’ımız var ve bu collection üzerinde Code alanı 5417’ye eşit olan ve kayıt yaratılma tarihi 1 Ocak 2020’den büyük olan verilerin gelmesini istiyoruz.

SQL tabiriyle –> WHERE Code=5417 AND createdDate>=2020-01-01

Bunu MongoDB’de şu şekilde sorguluyoruz.

db.getCollection(‘Telemetry‘).find({$and:[{“createdDate” : {“$gte”: new Date(2020-01-01T00:00:00.000Z)}},{code:5417}]})

Ancak bu sorguyu direk olarak PyMongo ile kullanmak istediğinizde tarih için kullandığımız New Date ya da ISODate fonksiyonu çalışmayacaktır.

Bunun için Python’un dateutil kütüphanesini kullanmamız gerekir.

from pymongo import MongoClient

import dateutil
dateStr = '2020-01-01T00:00:00.000Z'
myDatetime = dateutil.parser.parse(dateStr)

client = MongoClient('mongodb://ip_address:port', username='user', password='pass', authSource='admin')

IOTCloud = client.get_database('IOTCloud')

telemetry = IOTCloud.Telemetry

datapoints = list(telemetry.find({"$and":[{"createdDate" : {"$gte": dateutil.parser.parse(dateStr)}},{"code":"5417"}]}))

Artık sonuçlara filtreli bir şekilde PyMongo ile de erişebilirsiniz.

Kolay gelsin 🙂

Bir Cevap Yazın