具有匹配项的MongoDB聚合显示所有记录

问题描述 投票:1回答:1

我有以下json对象。

{
"_id" : ObjectId("123209sfekjern"),
"Name" : "Test1",
"Orders" : [ 
    {
        "Date" : "2020-05-05",
        "Total" : "100.00"
    }, 
    {
        "Date" : "2020-05-10",
        "Total" : "110.00"
    }, 
    {
        "Date" : "2020-05-11",
        "Total" : "100.00"
    }, 
    {
        "Date" : "2020-05-14",
        "Total" : "110.00"
    }, 
    {
        "Date" : "2020-05-20",
        "Total" : "100.00"
    }, 
    {
        "Date" : "2020-05-15",
        "Total" : "100.00"
    }, 
    {
        "Date" : "2020-05-12",
        "Total" : "110.00"
    }, 
    {
        "Date" : "2020-05-18",
        "Total" : "100.00"
    }, 
    {
        "Date" : "2020-05-31",
        "Total" : "110.00"
    }
]

}

我需要大于100.00的所有订单的客户名称,orders.Date和Order.Total。>

我尝试了以下查询。。

db.Customers.aggregate
    (
    [
        {
            $match: {
                $and: [
                    {"Orders.Date":{$gte:"2020-05-15"}},//ISODate('2020-05-15 10:00:00.000Z')
                    { "Orders.Total": { $gte:  "100.00" } },
                    ]
            }
        },
        { $project: { _id:0, Name: 1, "Orders.Total": 1, "Orders.Date": 1} },
    ]
    )

上面的查询返回所有记录。我仍然是初学者,正在学习mongodb。任何帮助将不胜感激。

谢谢。

我有以下json对象。 {“ _id”:ObjectId(“ 123209sfekjern”),“名称”:“ Test1”,“订单”:[{“日期”:“ 2020-05-05”,“总计”:“ 100.00”},{“日期“:” ...

mongodb mongoose mongodb-query aggregation-framework aggregate
1个回答
0
投票

$match在文档级别过滤,因此如果至少一个子文档符合您的条件,则将返回整个文档。为了过滤嵌套数组,您需要$filter

© www.soinside.com 2019 - 2024. All rights reserved.