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