MongoDB如何筛选仅含3字符ISO代码的国家数据?
提取符合条件的国家列表(MongoDB实现)
要筛选出仅包含国家的列表,你可以通过给distinct方法添加查询条件,只保留iso_code为3字符的文档,具体修改方案如下:
方法一:使用带条件的distinct
直接在distinct的第二个参数中传入筛选条件,用正则匹配长度恰好为3的iso_code:
db.owid_energy_data.distinct("country", { iso_code: { $regex: /^[A-Za-z]{3}$/ } })
该方法会直接返回去重后的国家名称数组,适合简单场景。
方法二:使用聚合管道(支持更多扩展)
如果需要对结果做进一步处理(比如排序、格式调整),可以用聚合管道实现:
db.owid_energy_data.aggregate([ // 筛选iso_code为3字符的文档 { $match: { iso_code: { $regex: /^[A-Za-z]{3}$/ } } }, // 按country字段分组去重 { $group: { _id: "$country" } }, // 调整输出格式,只保留country字段 { $project: { country: "$_id", _id: 0 } }, // 可选:按国家名称排序 { $sort: { country: 1 } } ])
聚合管道返回的是包含country字段的文档数组,灵活性更高。
内容的提问来源于stack exchange,提问作者Samantha
相关产品推荐
相关产品推荐

