在没有日期时间的特定月份或范围月份上查询Mongodb

时间:2014-10-31 17:06:21

标签: mongodb mongoose

我使用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,但这不是我想要的,我不想过滤年份。

1 个答案:

答案 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
}