Mongo过滤器数组数组数组

编程入门 行业动态 更新时间:2024-10-19 06:24:52
本文介绍了Mongo过滤器数组数组数组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我正在尝试过滤数组数组的列表,这是结构的一个例子.

I'm trying to filter the list of an array of array arrays, this is an example of structure.

{ "array1": [ { "array2": [ { "array3": [ { "sampleId": 1 }, { "sampleId": 2 }, { "sampleId": 5 } ] }, { "array3": [ { "sampleId": 7 }, { "sampleId": 8 } ] } ] }, { "array2": [ { "array3": [ { "sampleId": 1 } ] } ] } ] }

假设我想用sampleId> 2过滤掉所有子文档

Let's say that i want to filter out all the subdocuments with sampleId > 2

这是预期结果的一个例子.

this is an example of the expected result.

{ "array1": [ { "array2": [ { "array3": [ { "sampleId": 1 }, { "sampleId": 2 } ] }, { "array3": [] } ] }, { "array2": [ { "array3": [ { "sampleId": 1 } ] } ] } ] }

我尝试使用聚合/地图/过滤器技术,如这篇文章和其他文章中所述,但结果始终是array3空的.

I tried using aggregation/map/filter technique as explained in this post and others but the results are always giving array3 empty.

推荐答案

您可以在下面的汇总中尝试

You can try below aggregation

基本上,您需要使用 聚合,最后使用> $filter 和最后一个.

Basically you need to loop over each array using $map aggregation and finally use $filter with the last one.

db.collection.aggregate([ { "$project": { "array1": { "$map": { "input": "$array1", "as": "a1", "in": { "array2": { "$map": { "input": "$$a1.array2", "as": "a2", "in": { "array3": { "$filter": { "input": "$$a2.array3", "as": "a3", "cond": { "$lte": ["$$a3.sampleId", 2] } } } } } } } } } }} ])

输出

[ { "array1": [ { "array2": [ { "array3": [ { "sampleId": 1 }, { "sampleId": 2 } ] }, { "array3": [] } ] }, { "array2": [ { "array3": [ { "sampleId": 1 } ] } ] } ] } ]

更多推荐

Mongo过滤器数组数组数组

本文发布于:2023-11-22 13:44:56,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1617658.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:数组   过滤器   Mongo

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!