Mongodb Mongo查询-查找文档中的最小值
我想在mongoDB文档中找到最小值: 样本文件Mongodb Mongo查询-查找文档中的最小值,mongodb,Mongodb,我想在mongoDB文档中找到最小值: 样本文件 db.marks.insert({"name" : "John", "subject1" : 100, "subject2" : 98, "subject3" : 99, "subject4" : 97}); 我想在每个文档中找到subject1、subject2、subject3、subject4的最小值。尝试为此使用聚合框架,但它似乎可以跨文档工作。有没有办法在文档中找到价值 您可以按以下方式进行聚合: $group按名称将主题字段转换为
db.marks.insert({"name" : "John", "subject1" : 100, "subject2" : 98, "subject3" : 99, "subject4" : 97});
我想在每个文档中找到
subject1、subject2、subject3、subject4
的最小值。尝试为此使用聚合框架,但它似乎可以跨文档工作。有没有办法在文档中找到价值 您可以按以下方式进行聚合:
按名称将主题字段转换为数组$group
一个名为$project
的字段,作为每个人所有分数的score
$setUnion
记录$unwind
数组
再次按姓名查找$group
每人得分$min
你能改变你的数据模型吗?像{name:'John',subjects:[{name:'subject1',mark:100},{name:'subject2',mark:98}}这样的东西会让事情简单得多。我可以做到。但我能和其他领域一起得到最低分数吗?我建议这个模型更容易找到所有学科的最低分数。如果您想为每个子文档添加其他信息,请继续。我可以执行mongo查询以从您建议的数据模型中获取最低值吗?是的,使用聚合框架进行此操作将非常简单。
db.marks.aggregate([
{$group:{"_id":"$name",
"subject1":{$push:"$subject1"},
"subject2":{$push:"$subject2"},
"subject3":{$push:"$subject3"},
"subject4":{$push:"$subject4"}}},
{$project:{"score":{$setUnion:["$subject1",
"$subject2",
"$subject3",
"$subject4"]}}},
{$unwind:"$score"},
{$group:{"_id":"$_id","minScore":{$min:"$score"}}}
])