给出一些样本收集数据:
{
"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")
}
});
答案 0 :(得分:0)
作为一个选项,你可以通过与“pubDate”一起存储一些“pubDateObj”和“year”,“month”等单独的字段来对你的模式进行非规范化,并通过pubDateObj.year创建索引。 您应该以最适合应用程序查询的方式设计架构。