你好,开发人员,
我在MongoDB中遇到了这样的JSON数据
[{
"id": "GLOBAL_EDUCATION",
"general_name": "GLOBAL_EDUCATION",
"display_name": "GLOBAL_EDUCATION",
"profile_section_id": 0,
"translated": [
{
"con_lang": "US-EN",
"country_code": "US",
"language_code": "EN",
"text": "What is the highest level of education you have completed?",
"hint": null
},
{
"con_lang": "US-ES",
"country_code": "US",
"language_code": "ES",
"text": "\u00bfCu\u00e1l es su nivel de educaci\u00f3n?",
"hint": null
}...
{
....
}
]
我正在使用以下查询来投影结果:
db.collection.find({
},
{
_id: 0,
id: 1,
general_name: 1,
translated: {
$elemMatch: {
con_lang: "US-EN"
}
}
})
这里有个小玩意儿:https://mongoplayground.net/p/I99ZXBfXIut
我希望完全不返回$elemMatch
不匹配的记录。
在小提琴输出中,您可以看到第二个项目没有translated
属性,在这种情况下,我根本不希望返回第二个项目。
我使用Laravel作为后端技术,我可以使用PHP过滤掉那些记录,但是返回了很多记录,我认为使用PHP过滤不是最好的选择。
答案 0 :(得分:2)
您需要在第一个参数中使用$elemMatch
db.collection.find({
translated: {
$elemMatch: {
con_lang: "IT-EN"
}
}
})