2014-05-21 136 views
1

我想用id條件選擇一個數組中的對象。在下面的img我想選擇[0]在數組中選擇一個對象

enter image description here

db.users.find({"injury._id": ObjectId("537233061845d2ec10000071")}) 

Thankx的幫助。

+0

我可以請懇求你**停止張貼截圖**。他們很難嘗試閱讀,並且數據(您至少已經發布了一些文字)能夠更好地表現爲文字,因此人們可以真正使用它。 –

+0

因爲這樣做。你真正的問題是什麼?你想選擇一個帶'_id'值的數組元素還是你想選擇一個數組的索引'0'?然後做什麼? –

+0

我想用'_id'選擇數組元素... – Anup

回答

2

我在這裏猜測你只想只有看到你正在搜索的文檔中選定的數組元素。使用投影:

db.users.find(
    { "injury._id": ObjectId("537233061845d2ec10000071")}, 
    { "injury.$": 1 } 
) 

這只是返回匹配的元素,而不是所有的人。

如果您預計超過一個匹配(不太可能用的ObjectId,但備查)然後使用.aggregate()方法代替:

db.users.aggregate([ 

    // Match documents first, helps reduce the pipeline 
    { "$match": { 
     "injury._id": ObjectId("537233061845d2ec10000071") 
    }}, 

    // Unwind the array 
    { "$unwind": "$injury" }, 

    // Actually match the elements 
    { "$match": { 
     "injury._id": ObjectId("537233061845d2ec10000071") 
    }}, 

    // Group back if you really want arrays 
    { "$group": { 
     "_id": "$_id", 
     "injury": { "$push": "$injury" }, 
     // and use "$first" for any other fields 
    }} 
]) 

所以,現在你知道當你碰到做什麼那一個也是。

+0

Thankx ...作品不錯...下次我會嘗試發佈它沒有截圖.. :) – Anup

+0

@Anup Thankyou。此外,您還需要在答案中包含基本示例,以便何時需要從數組中過濾**多個**結果。 –