MongoDB/MongoEngine: получить 2 счетчика в 1 запросе

Я пытаюсь минимизировать количество вызовов базы данных в приложении.

Можно ли выполнить эти два запроса за один вызов?

system_0 = System.objects(platform_id=platform_id, type=0).count()
system_1 = System.objects(platform_id=platform_id, type=1).count()

person okoboko    schedule 10.10.2014    source источник


Ответы (1)


Я не знаю, что такое mongoengine, но я думаю, вы сможете перевести мой ответ оболочки mongo на то, что вам подходит. Да, вы можете достичь этого с помощью агрегации. Например:

db.collection.aggregate([{ 
   $match : { platform_id : ... }
}, {
    $group: {
        _id: "$type",
        count: { $sum: 1 }
    }
}]);

Если у вас больше типов, чем 0, 1, вы также можете исключить их из $match.

person Salvador Dali    schedule 10.10.2014