我想$match
在一个MongoDB中,文档的数量以千计,所以寻找动态sol:$doc.k
等于k
、$match
之后的$info.data.k
,那么我们就有了一个只包含$matchs
的信息的文档,请参见预期的输出文档。如果您有任何问题,请告诉我。
[
{
"doc": {
"k": "ABC",
"v": {
"sec": 0
}
},
"info": [
{
"data": [
{
"k": "XYZ",
"v": {
"know": "alpha"
}
},
{
"k": "ABC",
"v": {
"know": "alpha"
}
}
]
}
]
}
]
预期的输出文档如下所示
[
{
"doc": {
"k": "ABC",
"v": {
"sec": 0
}
},
"info": [
{
"data": [
{
"k": "ABC",
"v": {
"know": "alpha"
}
}
]
}
]
}
]
1条答案
按热度按时间2jcobegt1#
$set
-更新info
字段。1.1.
$map
-由于info
是一个数组,因此需要迭代info
数组中的每个文档并返回一个新数组。1.1.1.
$filter
-通过doc.k
和当前迭代k
值过滤文档。Sample Mongo Playground