2014-05-21 102 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。此外,您还需要在答案中包含基本示例,以便何时需要从数组中过滤**多个**结果。 –