You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将MongoDB查询结果转为目标字段值数组而非对象数组?

解决方法

你可以通过两种方式实现需求:

方法一:使用distinct方法(最简洁)

distinct方法能直接返回指定字段的值数组,还支持传入查询条件过滤文档,完全匹配你的需求:

db.collection_name.distinct("TARGETFIELD", {
    "FIELD1": "VALUE1", 
    "FIELD2": "VALUE2"
})

执行后直接返回:["ABC", "DEF"]

方法二:使用聚合管道(更灵活,适合复杂场景)

如果后续需要扩展查询逻辑(比如添加字段处理、自定义分组规则等),可以用聚合管道实现:

db.collection_name.aggregate([
    // 过滤符合条件的文档
    { $match: {
        "FIELD1": "VALUE1", 
        "FIELD2": "VALUE2"
    }},
    // 将所有TARGETFIELD的值收集到数组中
    { $group: {
        _id: null, // 不按任何字段分组,合并所有匹配文档
        result: { $push: "$TARGETFIELD" }
    }},
    // 只保留结果数组,移除_id字段
    { $project: {
        _id: 0,
        result: 1
    }}
])

执行后会返回包含数组的对象:{ "result": ["ABC", "DEF"] },直接提取result字段的值即可。

注意:若TARGETFIELD存在重复值,distinct会自动去重,而聚合管道的$push会保留所有值(包括重复项),可根据实际需求选择。

内容的提问来源于stack exchange,提问作者Kaushik Mahadevan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 18:17:04