У меня есть процесс, который подсчитывает, сколько документов находится рядом с документом (плотность). В настоящее время я рассчитываю плотность для каждого документа следующим образом:
def _density(r):
radius = 500
client = MongoClient("....")
db = client.restaurant_density.data
count = db.count_documents({
"location": {
"$geoWithin": {"$centerSphere": [[r["longitude"], r["latitude"]], radius / 6378100]}
}
}, hint="location_2dsphere")
area = pi * (radius ** 2)
density = count / area
db.update_one({"uidentifier": r["uidentifier"]}, {"$set": {"density": density}})
client.close()
Проблема возникает, когда я хочу выполнить это для документов объемом 160 КБ. Я хочу получить count
для всех документов одновременно, то есть, используя агрегатный конвейер, но я не знаю, как это сделать.
Спасибо за совет.