我使用mongodb存储日期时间。
示例
数据库数据:
[
{
id: 1
date: '2014-11-01T00:00:00.000Z'
},
{
id: 2
date: '2013-10-11T00:00:00.000Z'
},
{
id: 3
date: '2012-11-21T00:00:00.000Z'
}
]
按第11个月过滤,例如query.find({' date':{$ month:11}})应该得到结果:
[
{
id: 1
date: '2014-11-01T00:00:00.000Z'
},
{
id: 3
date: '2012-11-21T00:00:00.000Z'
}
]
如何进行查询以获得我想要的内容?
我搜索并获得Query Mongodb on month, day, year... of a datetime,但这不是我想要的,我不想过滤年份。
答案 0 :(得分:4)
$month
是一个聚合运算符,因此它只能与aggregate
一起使用,而不能与find
一起使用:
db.test.aggregate([
{$project: {
id: 1,
date: 1,
month: {$month: '$date'}
}},
{$match: {month: 11}},
{$project: {
id: 1,
date: 1
}}
])
结果:
{
"result" : [
{
"_id" : ObjectId("5453d0b73712b66352662484"),
"id" : 1,
"date" : ISODate("2014-11-01T00:00:00.000Z")
},
{
"_id" : ObjectId("5453d0b73712b66352662486"),
"id" : 3,
"date" : ISODate("2012-11-21T00:00:00.000Z")
}
],
"ok" : 1
}