MongoDB条件agregation无法正常工作

时间:2015-12-01 13:24:46

标签: mongodb aggregation-framework

我有一个网站集合,每个网站都有很多链接(每个链接是一个不同的文档),并且要完成我有一个日期字段(这是一个字符串,因为谁创建了系统是一个奇怪的人...)

我需要进行查询,为每个站点提供一个文档,其中包含最近日期的所有链接(仅考虑日/月/年)。例如:

  1. 网站1链接12/12/2015 2pm
  2. 网站1 link2 12/12/2015 3pm
  3. Site 1 link3 11/11/2015 2pm
  4. 我需要在单个文档中检索1和2,链接和link2必须在一个数组中,日期必须只是月/日/年。

    我试着这样做:

    db.getCollection('sites').aggregate(
        {$sort: { date: 1, site: 1, link: 1 } }, 
        {$group:{_id: "$site", date: {$last: {"$substr": [ "$date", 0, 10 ]}}, links: {$push: "$link"}}});
    

    它工作了一点,我可以加入网站,并检索最后的日期,但我得到的链接是网站上的所有链接,不仅是那些日期与最后一个相匹配的链接。

    我也尝试使用match子句,但我只能在group子句中使用$ last。

    我对mongodb并不太熟悉。有人可以帮帮我吗?

    网站集:

    {
        "_id" : ObjectId("558066d0e4b0b95264365b2b"),
        "site" : "Amazon",
        "date" : "2015-06-16T15:11:25.828-0300",
        "link" : "http://amazon.com"
    },
    {
        "_id" : ObjectId("558066d0e4b0b95264365b2c"),
        "site" : "Amazon",
        "date" : "2015-06-16T15:11:26.828-0300",
        "link" : "http://amazon.com.ca"
    },
    {
        "_id" : ObjectId("558066d0e4b0b95264365b2d"),
        "site" : "Google",
        "date" : "2015-06-13T15:11:28.828-0300",
        "link" : "http://google.com"
    }
    

0 个答案:

没有答案