mongodb 文章表字段 _id title content date(时间戳)
如何查询文章按年份归档这样的列表(刚接触mongodb)
2017
2017-01-3 文章标题
2017-01-3 文章标题
2016
2016-01-3 文章标题
2016-01-3 文章标题
mongodb 文章表字段 _id title content date(时间戳)
如何查询文章按年份归档这样的列表(刚接触mongodb)
2017
2017-01-3 文章标题
2017-01-3 文章标题
2016
2016-01-3 文章标题
2016-01-3 文章标题
我现在正在弄这个,你可以参考下我的,我是这样解决的,这里我是采用的ejs模块,如过你也是采用这个模块引擎的话,这样写是可以的。
<ul class="archive">
<% var lastDay= 0 %>
<% posts.forEach(function(post,index){%>
<%if(lastDay !=post.time.day){%>
<li><h2><%=post.time.day%></h2></li>
<%lastDay=post.time.day%>
<%}%>
<li>
<a href="/u/<%=post.name%>"><%=post.name%></a> 发表的
<a href="/u/<%=post.name%>/<%=post.time.day%>/<%=post.title%>"><%=post.title%></a>
</li>
<%})%>
</ul>
导入数据
db.getCollection('devices').insert([
{
"_id" : ObjectId("593d1df123aa5c000ea57b80"),
"Last_Modify_Time" : 1,
"Last_Modify_By" : 1,
"Creation_Time" : ISODate("2017-06-11T10:39:45.000Z")
},{
"_id" : ObjectId("593e7091e2bdc3000e4cdca3"),
"Last_Modify_Time" : 2,
"Last_Modify_By" : 2,
"Creation_Time" : ISODate("2017-06-12T10:44:33.000Z")
},{
"_id" : ObjectId("5949106bd4e170000e544c1a"),
"Last_Modify_Time" : 3,
"Last_Modify_By" : 3,
"Creation_Time" : ISODate("2017-06-20T12:09:15.000Z")
},{
"_id" : ObjectId("593ced72c4162e000e7e9611"),
"Last_Modify_Time" : null,
"Last_Modify_By" : null,
"Creation_Time" : ISODate("2017-06-11T07:12:50.000Z")
}
])
SQL
db.getCollection('devices').aggregate([
{
$group: {
_id:{$dateToString: {format: "%Y-%m-%d ", date:'$Creation_Time' }},
'total': {$sum: 1},
'data': {$push: '$$ROOT'}
}
},{
$group: {
_id: {$substr: ['$_id', 0, 4] },
'data': {$push: '$$ROOT'}
}
}
])
这样返回的数据是
/* 1 */
{
"_id" : "2017",
"data" : [
{
"_id" : "2017-06-12 ",
"total" : 1.0,
"data" : [
{
"_id" : ObjectId("593e7091e2bdc3000e4cdca3"),
"Last_Modify_Time" : 2,
"Last_Modify_By" : 2,
"Creation_Time" : ISODate("2017-06-12T10:44:33.000Z")
}
]
},
{
"_id" : "2017-06-20 ",
"total" : 1.0,
"data" : [
{
"_id" : ObjectId("5949106bd4e170000e544c1a"),
"Last_Modify_Time" : 3,
"Last_Modify_By" : 3,
"Creation_Time" : ISODate("2017-06-20T12:09:15.000Z")
}
]
},
{
"_id" : "2017-06-11 ",
"total" : 2.0,
"data" : [
{
"_id" : ObjectId("593ced72c4162e000e7e9611"),
"Last_Modify_Time" : null,
"Last_Modify_By" : null,
"Creation_Time" : ISODate("2017-06-11T07:12:50.000Z")
},
{
"_id" : ObjectId("593d1df123aa5c000ea57b80"),
"Last_Modify_Time" : 1,
"Last_Modify_By" : 1,
"Creation_Time" : ISODate("2017-06-11T10:39:45.000Z")
}
]
}
]
}
5 回答4.8k 阅读✓ 已解决
4 回答2.4k 阅读✓ 已解决
2 回答1.7k 阅读✓ 已解决
5 回答1.8k 阅读
2 回答1.3k 阅读✓ 已解决
3 回答2k 阅读
1 回答3.2k 阅读
可以使用MongoDB的aggregation来实现,可能会用到其中的$group,$year等operator或者function。
MongoDB的aggregation主要用于实现统计、复杂查询等功能,非常优秀。下面链接是官方文档:
https://docs.mongodb.com/manu...
供参考。
Love MongoDB!Have fun!