dmc1989
@dmc1989

Как искать по сумме полей в mongodb?

Пользователь вводит общую площадь, потом происходит поиск по совпадению общей площади. Но вот проблема, общей площади в коллекции нету, есть несколько разных площадей, и их надо просуммировать. Как правильно записать то, что у меня получилось?
query = {
    $lte: {
        {$sum: ["$area", "$businessArea", "$sgArea", "$forestArea"]} : maxArea
    },
    $gte: {
        {$sum: ["$area", "$businessArea", "$sgArea", "$forestArea"]} : minArea
    }
};
  • Вопрос задан
  • 412 просмотров
Решения вопроса 1
longclaps
@longclaps
db.test.drop();
db.test.insert([
    {_id: 1, "area": 1, "brea": 2},
    {_id: 2, "area": 3, "brea": 4}]);
db.test.aggregate([
    {$project: {"a": ["$area", "$brea"]}},
    {$unwind: "$a"},
    {$group: {_id: "$_id", "a": {$sum: "$a"}}},
    {$match: {"a": {$gt: 5, $lt: 10}}}
]);
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@lega
Храните общую площадь в документе - проще и работает на порядки бытрее на больших коллекциях.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы