2012-10-29 26 views
0

我正在玩貓鼬模式。我有3個項目,每一個與相應的ID字段是這樣的:在MongooseJS上通過簡單的ID查找項目

"_id": "508dcb79cb1c8ad910000001"," 
"_id": "508dcba389e2f32e11000002"," 
"_id": "508dcba389e2f32e11000003"," 

有沒有默認的方式來處理ID的那個大塊得到一個更清潔的一個,而不必設置自定義的ID號先手最後的數字,對應的ID? 或者我應該使用正則表達式或一些能夠通過ID來獲得他們是這樣的:

app.get('/fields/:id', function(req, res) { ; }); 

而且隨着/field/1/field/3或任何訪問它們。

回答

2

如上所述here,爲一個文件的的ObjectID由時間戳,機器ID,進程ID,以及一個計數器的。我沒有看到一種方法來自己拿出櫃檯,並拿出ObjectID。使用正則表達式來搜索索引可能不是一個好主意,因爲您最終會遍歷索引中的所有ObjectID。正如here指出的,只有簡單的前綴正則表達式可以利用索引。此外,我認爲多個文件可以有相同的計數器,例如如果在兩臺不同的機器上發生寫入同一個集合。

那麼簡單的答案是「不」。如果你真的想短ID的你或許應該推出自己的sequence numbers,使用類似shortid,或者只是看文件了由天然唯一索引(如果您的收藏恰好有一個),如電子郵件,用戶名等