首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MongoDB Aggregation with match显示所有记录

MongoDB Aggregation with match显示所有记录
EN

Stack Overflow用户
提问于 2020-06-06 22:52:50
回答 1查看 51关注 0票数 1

我有如下的json对象。

代码语言:javascript
复制
{
"_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

我尝试了以下查询..

代码语言:javascript
复制
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。任何帮助都将不胜感激。

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-06 23:02:38

$match在文档级进行过滤,因此如果至少有一个子文档与您的条件匹配,则会返回整个文档。要过滤嵌套数组,您需要$filter

代码语言:javascript
复制
db.Customers.aggregate([
    {
        $project: {
            _id: 0,
            Name: 1,
            Orders: {
                $filter: {
                    input: "$Orders",
                    cond: {
                        $and: [
                            { $gte: [ "$$this.Date", "2020-05-15" ] },
                            { $gte: [ "$$this.Total", "100.00" ] },
                        ]
                    }
                }
            }
        }
    }
])

Mongo Playground

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62233435

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档