当搜索MongoDb等于EVPN时,我试图使用details.ap_name返回EVPN的不同值,但是搜索返回了details.sub_ap_name的所有唯一值。
下面是我当前的查询内容。我也尝试了一些综合搜索,但这些也不适用于我。有人能告诉我我可能做错了什么吗?
db['test-data'].distinct("details.sub_ap_name",{"details.ap_name": "EVPN"})
这是我的数据集
{
"_id" : ObjectId("101"),
"details" : [
{
"run_date" : "2021-04-18",
"ap_name" : "EVPN",
"sub_ap_name" : "EVPN TOR"
},
{
"run_date" : "2021-04-18",
"ap_name" : "EVPN",
"sub_ap_name" : "EVPN Mobility"
},
{
"run_date" : "2021-04-17",
"ap_name" : "Multicast",
"sub_ap_name" : "Multicast Layer 2"
}
]
}发布于 2021-04-18 23:44:32
演示- https://mongoplayground.net/p/49vHHUNYn8K
注:添加details.ap_name索引以提高性能
从输入文档解构数组字段,以输出每个元素的文档。每个输出文档都是输入文档,数组字段的值由元素替换。
返回将表达式应用于一组按键共享同一组文档中的每个文档所产生的所有唯一值的数组。未指定输出数组中元素的顺序。
根据指定的_id表达式对输入文档进行分组,并为每个不同的分组输出一个文档。每个输出文档的_id字段包含唯一的值组。输出文档还可以包含保存累加器表达式值的计算字段。
db.collection.aggregate([
{ $match: { "details.ap_name": "EVPN" } }, // filter to reduce load on unwind
{ $unwind: "$details" }, // break into individual documents
{ $match: { "details.ap_name": "EVPN" } }, // filter
{
$group: { _id: "$details.ap_name", "sub_ap_names": { $addToSet: "$details.sub_ap_name" } } // add unique values
}
])https://stackoverflow.com/questions/67152832
复制相似问题