我有一个网站集合,每个网站都有很多链接(每个链接是一个不同的文档),并且要完成我有一个日期字段(这是一个字符串,因为谁创建了系统是一个奇怪的人...)
我需要进行查询,为每个站点提供一个文档,其中包含最近日期的所有链接(仅考虑日/月/年)。例如:
我需要在单个文档中检索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"
}