MongoDB использует $ geoWithin в совокупности - PullRequest
0 голосов
/ 19 февраля 2020

У меня есть процесс, который подсчитывает, сколько документов находится рядом с документом (плотность). В настоящее время я рассчитываю плотность для каждого документа следующим образом:

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 для всех документов одновременно, то есть, используя агрегатный конвейер, но я не знаю, как это сделать.

Спасибо за совет.

...