Коллекция MongoDB, суммируйте все значения ключей с помощью команд терминала - PullRequest
2 голосов
/ 03 февраля 2020

Вот элемент моей таблицы:

{
"_id" : ObjectId("5c20erefebddfbc9fdsff"),
"name" : "robe simple",
"price" : 4.9,
"unit" : "piece",
"price_type" : "flexible",
"updated_at" : ISODate("2019-12-30T09:06:35Z"),
"created_at" : ISODate("2018-12-24T14:23:25Z"),
"conciergerie_ids" : [
    "5c20ebefedcfbc9a103erfefeef921a9e2",
    "5c20ebdefsfcfbc9a1efsefe03b921a9e3",
    "5c20ebdsefefcfbc9a1sefef03b921a9e4",
],
}

Мне нужно сложить всю цену указанного c консьержа ie, только для create_at 2019.

Я пробовал это:

> db.prestations.find({'conciergerie_ids': '5c20ebseffhhb3b921adfdf9ef'}).count({ $sum: 'price' })

Но я получаю только сумму всех предметов, соответствующих моему консьержу ie.

Я тоже пробовал:

> db.prestations.find({'conciergerie_ids': '5c20ebdcfbefefc9a103b921afefef9ef'}).aggregate([ { $group: total: {{ $sum: "$price" }} } ])

Как я могу получить сумма всей цены указанного c консьержа ie и созданного только в 2019 году? Спасибо!

1 Ответ

1 голос
/ 03 февраля 2020

Вы можете использовать ниже агрегации:

db.collection.aggregate([
    {
        $match: {
            $and: [
                { 'conciergerie_ids': '5c20ebdcfbc9a103b921a9ef'},
                { created_at: { $gte: ISODate("2019-01-01T00:00:00Z") } }
            ]           
        }
    },
    {
        $group: {
            _id: null,
            total: { $sum: "$price" }
        }
    }
])

Пн go Детская площадка

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...