选择数组中的对象

时间:2014-05-21 10:02:15

标签: mongodb mongodb-query aggregation-framework

我想在id条件的数组中选择一个对象。在下面的img中我想选择[0]

enter image description here

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

感谢谢谢。

1 个答案:

答案 0 :(得分: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
    }}
])

所以现在你知道当你遇到那个时该怎么做。