MongoDB 项目 - return 数据仅当 $elemMatch 存在时
MongoDB Project - return data only if $elemMatch Exist
你好开发者,
我面临 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"
}
}
})
这里有一个 fiddle 相同的:https://mongoplayground.net/p/I99ZXBfXIut
我希望那些不匹配的记录 $elemMatch
根本不会被返回。
在 fiddle 输出中,您可以看到第二个项目没有 translated
属性,在这种情况下,我根本不希望返回第二个项目。
我正在使用 Laravel 作为后端技术,我可以使用 PHP 过滤掉那些记录,但是返回了很多记录,我认为使用 PHP 过滤不是最好的选择。
您需要在第一个参数中使用$elemMatch
db.collection.find({
translated: {
$elemMatch: {
con_lang: "IT-EN"
}
}
})
你好开发者,
我面临 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"
}
}
})
这里有一个 fiddle 相同的:https://mongoplayground.net/p/I99ZXBfXIut
我希望那些不匹配的记录 $elemMatch
根本不会被返回。
在 fiddle 输出中,您可以看到第二个项目没有 translated
属性,在这种情况下,我根本不希望返回第二个项目。
我正在使用 Laravel 作为后端技术,我可以使用 PHP 过滤掉那些记录,但是返回了很多记录,我认为使用 PHP 过滤不是最好的选择。
您需要在第一个参数中使用$elemMatch
db.collection.find({
translated: {
$elemMatch: {
con_lang: "IT-EN"
}
}
})