2016-05-05 21 views
1

在我的nodejs/mongo/mongoose應用程序中,用戶與不同的代碼相關聯。這些是3個字母的代碼,如ABC,XYZ,ACD等,每個人可以有這樣的零到最多20個代碼。一個樣本數據看起來像這樣:如何在mongodb/mongoose中存儲密鑰代碼?

[ 
{name: John, codes: 'abc, bbb, dyd, zzz'}, 
{name: Sammy, codes: 'haz, rty, dyd'}, 
{name: Suzanne, codes: 'abc, ccc, mnm, zzz'} 
] 

當我搜索的人,我搜索這些代碼。例如: :找到所有代碼爲'abc'的人(並擁有其他屬性)。

問題:如何存儲用戶代碼數據以獲得最佳性能? 像我的例子中的一個簡單的字符串?不同的行與ID和索引? 以及如何查詢具有貓鼬中特定代碼的人?

可能有成千上萬的人,而不是那麼多的代碼,可能有30個, ,每個人將有0到10或20代碼。

回答

0

將代碼放在列表中,如代碼所示:[「abc」,「bbb」,「dyd」,「zzz」];有很多方法可以添加。你請檢查mongodb網站。您總是可以通過簡單地檢索 db.collection.find({codes:「abc」})或
db.collection.find({$ and:[{codes:「abc」},{codes:「bbb」 }]})用於多個代碼搜索同一個人。一個前例。

`

db.array.insert({_ ID:0,代碼:[]})--- 寫結果({ 「nInserted」:1})--- db.array。 find()--- {「_id」:0,「codes」:[]} --- db.array.update({_ id:0},{$ push:{「codes」:「aaa」} }); --- WriteResult({「nMatched」:1,「nUpserted」:0,「nModified」:1})--- --- db.array.find()--- {「_id」:0 ,「codes」:[「aaa」]}`

+0

看起來不錯。代碼的數據類型是什麼?陣列?所以向它添加值只需要myArray.push('abc'); ? –

+0

是的,看到我之前的評論我添加了它。 – AMITAVA

0

我認爲將它們存儲在一個字符串中會讓你犯錯誤,並且很難在將來更改代碼。在我看來,你最好使用數組來存儲這些代碼,並給每個代碼一個1-30的標識符。然後,您可以將相應代碼的標識符推入其代碼數組中。至於查詢,請看this question