MongoDB中如何获取嵌套数组BASIC内文档的最小quantity值
解决MongoDB嵌套数组分组求最小值的问题
直接用MongoDB的聚合管道就能实现需求,核心是针对每个value下的BASIC数组单独计算最小值,而非全局取最小:
- 先用
$unwind把外层的value数组拆解开,让每个value元素成为独立文档 - 用
$addFields给每个value新增字段,通过$min提取当前value下BASIC数组里quantity的最小值 - 如果需要恢复原文档的数组结构,再用
$group把拆解后的value元素重新组合回去
具体代码示例:
db.legends.aggregate([ { $unwind: "$value" }, { $addFields: { "value.minQuantity": { $min: "$value.BASIC.quantity" } } }, { $group: { _id: "$_id", value: { $push: "$value" }, // 原文档有其他字段的话,用$first保留 name: { $first: "$name" } } } ])
这么处理后,每个value对象里都会带上对应的minQuantity,比如meteoEventType为RAIN的那组,就能得到0.01这个预期的最小值。
内容的提问来源于stack exchange,提问作者asant-leitha
相关产品推荐
相关产品推荐

