我有一個MongoDB的集合稱爲燈光和文檔中的這個集合的樣子,查找包含最接近MongoDB中傳遞的參數值的文件+ Node.js的
{
"_id": "50eea4a53004cc6233d12b02",
"Physicalentity": "Light",
"Sensor": "Tinkerforge",
"Unit": "Lux",
"value": "47.2",
"time": "12:23:17",
"date": "10.01.2013"
},
我想檢索文檔基於時間,因此要做到這一點,我寫了下面:
app.get('/lights/:time', function(req, res) {
var time = req.params.time;
console.log('Retrieving value: ' + time);
db.collection('lightsensor', function(err, collection) {
collection.findOne({'time':new BSON.ObjectID(time)}, function(err, item) {
res.send(item);
});
});
});
但是,當我輸入網址http://localhost:3000/lights/12:23:17
我得到錯誤:Argument passed in must be a single String of 12 bytes or a string of 24 hex characters
問題究竟在哪裏?
是否可以輸入時間並允許mongodb查找URL中指定的最近時間的文檔。
舉例來說,我進入http://localhost:3000/lights/12:23:20
這是不是我的集合中,但隨着時間12時23分十七秒的文檔存在。
如何告訴mongodb找到包含最接近傳遞參數值的文檔。
時間不是一個ObjectId,所以它沒有轉換。 – WiredPrairie
MongodB不支持您嘗試在本地執行的操作(2D地理空間索引除外)。您可能必須執行範圍查詢,然後根據時間跨度對結果進行排序(並限制這些結果)。雖然感覺有點笨重,但這對大多數數據庫來說都是一個挑戰。 – WiredPrairie