首页 > 解决方案 > MongoDB 根据对象成员过滤对象数组内容

问题描述

我有以下对象数组,想知道是否有办法将结果过滤为仅返回 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")
        }    
    ],
}

标签: mongodbmongodb-queryaggregation-framework

解决方案


您可以qTyIn$filterundefined内进行比较:

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

蒙戈游乐场


推荐阅读