我想为“输入部分”字段中的每个键打印“输出部分”字段的值,其中“概率”字段具有最大值。
我是MongoDB和pymongo的新手-据我所知,我需要以这种方式使用聚合(示例取自教程):
db.collection.aggregate([{$group : {_id : "$by_user", num_tutorial : {$max : "$likes"}}}])
虽然我不知道如何将其应用于我的示例。
content = [
{
"Stage": "Klage",
"Heading": "Anträge",
"Input-Section":
{
"keyword1_keyword2_keyword3":
[
{
"Output-Section": "reply_option_1",
"Probability": 0.32},
{
"Output-Section": "reply_option_2",
"Probability": 0.1},
{
"Output-Section": "reply_option_3",
"Probability": 0.58}
],
"keyword4_keyword5_keyword6":
[
{
"Output-Section": "reply_option_1",
"Probability": 0.35},
{
"Output-Section": "reply_option_2",
"Probability": 0.65}
]
}
}
]
因此,我希望看到……。喜欢 [“ reply_option_3”,“ reply_option_2”]
我将不胜感激。
答案 0 :(得分:0)
您可以使用聚合框架来实现:
db['02'].aggregate(
[
// Stage 1
{
$facet: {
// facet pipeline 1
kw123:[
{$project: {input:"$Input-Section.keyword1_keyword2_keyword3"}},
{$unwind: {path : "$input"}},
{$sort: {"input.Probability": -1}},
{$limit: 1},
{$project: {"Output-Section":"$input.Output-Section",_id:0 }},
],
// facet pipeline 2
kw456:[
{$project: {input:"$Input-Section.keyword4_keyword5_keyword6"}},
{$unwind: {path : "$input"}},
{$sort: {"input.Probability": -1}},
{$limit: 1},
{$project: {"Output-Section":"$input.Output-Section",_id:0 }},],
}
},
// Stage 2
{
$project: {
results:{$setUnion:["$kw123.Output-Section","$kw456.Output-Section"]}
}
},
],
);
结果为:
{
"results" : [
"reply_option_2",
"reply_option_3"
]
}
如果您还有其他字段,例如keyword1_keyword2_keyword3,则只需复制和更新构面管道,然后将新字段添加到结果中即可。
希望有帮助。