使用MongoDb查询获取特定字段

时间:2015-03-21 19:09:49

标签: mongodb aggregation-framework

我有这样的架构

{
    _id:ObjectId(),
    ...,
    translations:[{
        value: "English",
        code:"en"
    },{
        value: "German",
        code:"de"
    }]
}

所有对象都有代码'en'和'de'的翻译,如何使用代码'en'获取所有对象(value,id)? A结果应该类似于:

[{
    _id:ObjectId(),
    value:"English"
},....
...]

1 个答案:

答案 0 :(得分:2)

您可以使用aggregation pipeline

执行此操作
  • $unwind translations数组
  • 使用$match选择code 'en'
  • 的文档
  • 使用$project在结果中包含或重置字段。
    db.collection.aggregate(
        [
            { "$unwind": "$translations"}, 
            { "$match": { "translations.code": "en" }}, 
            { "$project": { "value": "$translations.value", "_id": 1 }}
       ]
    )