使用 MongoDb 查询获取特定字段

Get specific fields with MongoDb query

我有这样的架构

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

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

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

您可以使用 aggregation pipeline

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