2012-07-04 66 views
0

我需要在我的Users集合的每個文檔中存儲角色ID和角色名稱。我需要能夠說出「獲取具有xyz角色的用戶」或「獲取具有角色名稱的用戶包含'XYZ'」等類似的東西。在MongoDB中存儲可搜索值的數組

這在Mongo中甚至可能嗎?

現在,我存儲的數據是這樣的:

{ 
    "_id": { 
     "$id": "4fe30e3db92f5d2a5c000000" 
    }, 
    "alias": "rogue_coder", 
    "display_name": "Rogue Coder", 
    "email": "[email protected]", 
    "roles": { 
     "4fe30e5fb92f5d6f53000000": "Super Administrator" 
    } 
} 

就這樣,我可以看到,如果用戶有一個給定的角色,但我不能讓誰擁有包含角色的所有用戶例如「超級」一詞。任何想法如何做到這一點?

回答

1

基於什麼你試圖這樣做,你可能不得不& ROLE_NAME存儲ROLE_ID在單獨的陣列,像這樣:

{ 
    "_id": { 
     "$id": "4fe30e3db92f5d2a5c000000" 
    }, 
    "alias": "rogue_coder", 
    "display_name": "Rogue Coder", 
    "email": "[email protected]", 
    "role_names": [ 
     "Super Administrator" 
    ], 
    "role_ids" : [ 
     "4fe30e5fb92f5d6f53000000" 
    ] 
} 
1

不知道,但你可以嘗試有點像這樣

db.collection.find({ roles: { /super.*/i });