從的ObjectId執行日期範圍查詢我有一個集合,看起來像這樣:的MongoDB:在蒙戈外殼
{
_id: ObjectId("50a68673476427844b000001"),
other fields
}
我想做一個範圍查詢兩個日期之間找到記錄。我知道,我可以從在的ObjectId蒙戈外殼VAR日期這樣做:
var aDate = ObjectId().getTimestamp()
但沒有辦法(據我可以在瞬間計算出)創建的ObjectId由剛時間戳部分 - 我認爲我的理想的解決方案是不起作用的蒙戈外殼代碼如下:
var minDate = ObjectId(new Date("2012-11-10"));
var maxDate = ObjectId(new Date("2012-11-17"));
使用帶的minDate和MAXDATE的範圍值查找。
有沒有辦法在殼裏做這個 - 我不感興趣,一些司機的產品。
前8個字節mongoid所提供的解決方案是十六進制的時間戳,所以你可以創建一個從迄今取得前8個字節的有效的ObjectId,休息只是零和然後做類似於這樣的查詢:'{_id:{$ gt:ObjectId(「5087e5b106cffca815000000」)} }' – 2012-11-27 22:34:14
有一個很好的答案[我可以通過日期查詢MongoDB ObjectId嗎?](http:// stackoverflow。 COM /問題/ 8749971 /罐-I-查詢的mongodb-的objectid按日期),其包括一個'objectIdWithTimestamp()'JavaScript函數。您可以保存此功能在您的[.mongorc.js(http://www.mongodb.org/display/DOCS/Overview+-+The+MongoDB+Interactive+Shell#Overview-TheMongoDBInteractiveShell-.mongorc.js)有它在啓動時你'mongo'外殼可用。 – Stennie