2011-10-17 121 views
3

對象鍵我有這樣的結構索引MongoDB中

{ 
    "_id": "willwill", 
    "rental": { 
     "hitchhikergalaxy": {[...]}, 
     "animalfarm": {[..]} 
    } 
} 

其中[..]是嵌入文檔存儲租賃的細節(和完全相同的數據也對另一個集合存在)和rental對象的關鍵是book集合的_id

我該如何ensureIndex()此查詢?

db.users.find({"rental.animalfarm": {'$exists': true}}) 

(我使用MongoDB的PHP的,但上面的例子是在JavaScript)

+0

所以你想確認animalfarm值有一個索引? – Petrogad

+0

我需要知道哪個用戶在他們的租賃列表中有特定的書。一本書可能存在於多個用戶的列表中。 – willwill

回答

3

你可能要考慮重構文檔這樣的:

"rental": 
    [ 
    { "name":"hitchikergalaxy", "attributes": { your stuff } }, 
    { "name":"animalfarm", "attributes": { your stuff } } 
    ] 

現在你有一個路徑以確保索引「rental.name」

您可以進一步查找任何用戶租用animalfarm的所有文檔:

db.users.find({ "rental.name": "animalfarm" }) 

我一直在使用數據作爲鍵/名稱的路徑 - 它似乎總是使事情比他們需要更復雜。