Javascript 如何在MongoDB中列出数组内对象中的字段?

Javascript 如何在MongoDB中列出数组内对象中的字段?,javascript,node.js,mongodb,mongoose,backend,Javascript,Node.js,Mongodb,Mongoose,Backend,我正在为一个多语言网站使用下面的结构。为此,我将使用一个工具来添加/编辑所需的不同语言的单词 我想做的是在NodeJS/Express后端使用MongoDB(或Mongoose)查询来获取特定语言的密钥- { "languages": [ { "_id": "5d4ee75c1c9d4400007e9bd8", "code": "en", "texts": [ {

我正在为一个多语言网站使用下面的结构。为此,我将使用一个工具来添加/编辑所需的不同语言的单词

我想做的是在NodeJS/Express后端使用MongoDB(或Mongoose)查询来获取特定语言的密钥-

{
    "languages": [
        {
            "_id": "5d4ee75c1c9d4400007e9bd8",
            "code": "en",
            "texts": [
                {
                    "key": "language",
                    "word": "English"
                },
                {
                    "key": "title",
                    "word": "Colorblindness"
                },
                {
                    "key": "login",
                    "word": "Login"
                }
            ]
        },
        {
            "_id": "5d4ee8631c9d4400007e9bd9",
            "code": "es",
            "texts": [
                {
                    "key": "language",
                    "word": "Español"
                },
                {
                    "key": "title",
                    "word": "Daltonismo"
                },
                {
                    "key": "account",
                    "word": "Cuenta"
                },
                {
                    "key": "exit",
                    "word": "Salir"
                }
            ]
        },
        { ... }
    ]
}
例如,如果我查询“en”(英语),我希望结果如下

["language", "title", "login"]
,但如果我查询“es”(西班牙语),结果应该是

["language", "title", "account", "exit"]
这是mongoose,它不能与当前版本一起使用,但您需要根据以模式名称开头的代码对其进行编辑

假设每个代码都有自己的字段,您应该将“en”改为“es”

这是mongoose,它不能与当前版本一起使用,但您需要根据以模式名称开头的代码对其进行编辑


假设每个代码都有自己的字段,您应该将“en”更改为“es”。

对于您的查询,假设语言。代码具有唯一的值:

db.yourCollectionName.aggregate([
  {$match:{'languages.code': "es"}},
  {$unwind:'$languages'},
  {$match:{'languages.code': "es"}},
  {$project:{keys:'$languages.texts.key'}}
])

假设您的集合是一个大型数据集,然后添加
$match
作为第一阶段,将筛选至少一个语言元素的文档。code具有值“es”。

对于您的查询,假设语言。code具有唯一值:

db.yourCollectionName.aggregate([
  {$match:{'languages.code': "es"}},
  {$unwind:'$languages'},
  {$match:{'languages.code': "es"}},
  {$project:{keys:'$languages.texts.key'}}
])

假设您的集合是一个大型数据集,然后添加
$match
作为第一阶段,将筛选至少一个语言元素的文档。code的值为“es”。

到目前为止,您尝试了什么来实现此结果?到目前为止,您尝试了什么来实现此结果?