2013-07-06 47 views
2

查找/查詢日期由今年由於一些樣品採集數據:如何在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") 
    } 
}); 
+0

這是目前索引效率最高的方法,通過AF下面的方法不會有效地使用索引 – Sammaye

+0

對不起,'AF'是什麼意思? – stellarchariot

+2

[查詢Mongodb在日期時間的月,日,年......]的可能重複(http://stackoverflow.com/questions/8136652/query-mongodb-on-month-day-year-of-a-datetime ) – WiredPrairie

回答

0

作爲一個選項,您可以通過與「pubDate」一起存儲一些帶有諸如「年」,「月」等單獨字段的「pubDateObj」並通過pubDateObj.year創建索引來使規範非規範化。 您應該以最適合您的應用程序查詢的方式設計您的架構。