Mongo 查询 - 查找文档中的最小值

Mongo query - finding minimum value within a document

我想在 mongoDB 文档中找到最小值:

示例文档

db.marks.insert({"name" : "John", "subject1" : 100, "subject2" : 98, "subject3" : 99, "subject4" : 97});

我想在每个文档中找到 subject1,subject2,subject3,subject4 的最小值。试图为此使用聚合框架,但它似乎可以跨文档工作。有没有办法在文档中找到价值?

您可以汇总如下:

  • $group 按名称将主题字段转换为数组。
  • $project 一个名为 score 的字段作为每个人所有分数的 $setUnion
  • $unwind score 数组。
  • $group 再次按姓名查找 $min 每个人的分数。

代码:

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"}}}
])