2

给定一些样本收集数据:

{
    "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})

我发现我可以采用以下日期范围查询方法,但似乎应该有一种更简单的方法:

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

1 回答 1

0

作为一种选择,您可以通过与“pubDate”一起存储一些“pubDateObj”以及“年”、“月”等单独的字段,并通过 pubDateObj.year 创建索引来稍微非规范化您的模式。您应该以最适合您的应用程序查询的方式设计您的架构。

于 2013-07-07T09:00:46.850 回答