MongoDB фильтрует содержимое массива объектов на основе члена объекта - PullRequest
1 голос
/ 01 мая 2020

У меня есть следующий массив объектов, и мне было интересно, есть ли способ отфильтровать результаты, возвращая только записи QtyIn или возвращая только записи QtyOut? Любая подсказка высоко ценится. Спасибо за вашу помощь

{
    warehouseID: "1234",
    transactions : [ 
        {
            "qtyIn" : "10",
            "transDateTime" : ISODate("2019-09-10T18:54:41.983Z")
        }, 
        {
            "qtyOut" : "11",
            "transDateTime" : ISODate("2019-08-10T18:54:41.983Z")
        },
        {
            "qtyOut" : "200",
            "transDateTime" : ISODate("2019-02-10T11:54:41.983Z")
        }    
    ],
}

1 Ответ

1 голос
/ 01 мая 2020

Вы можете сравнить qTyIn с undefined в $ filter :

db.collection.aggregate([
    {
        $addFields: {
            transactions: {
                $filter: {
                    input: "$transactions",
                    cond: {
                        $ne: [ "$$this.qtyIn", null ]
                    }
                }
            }
        }
    }
])

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

...