如何在MongoDB中按年查找/查询日期

时间:2013-07-06 23:50:08

标签: mongodb

给出一些样本收集数据:

{
    "question" : "Which do you usually eat?",
    "pubDate" : ISODate("1999-01-24T13:00:00Z"),
    "_id" : ObjectId("51d7f9e231d2fe0000000002"),
}
{
    "question" : "Which language do you usually speak?",
    "pubDate" : ISODate("2013-12-02T13:00:00Z"),
    "_id" : ObjectId("51d8a476a6b9d70000000006"),
}

您如何查询1999年的所有问题?我所追求的是:

db.poll.find({pubDate.year: 1999})

我发现我可以使用以下date range query approach,但似乎应该有一个更简单的方法:

db.poll.find({
  pubDate: { 
    $gte: new Date("1 Jan, 1999"), 
    $lt: new Date("1 Jan, 2000")
  }
});

1 个答案:

答案 0 :(得分:0)

作为一个选项,你可以通过与“pubDate”一起存储一些“pubDateObj”和“year”,“month”等单独的字段来对你的模式进行非规范化,并通过pubDateObj.year创建索引。 您应该以最适合应用程序查询的方式设计架构。