如何在 MongoDB 中选择高于平均值


在 MongoDB 中使用 aggregate() 来选择高于平均值的文档。若要查找平均值,请在 MongoDB 中使用 $avg。

让我们创建一个包含文档的集合 -

> db.demo552.insertOne({values:10});{
   "acknowledged" : true, "insertedId" : ObjectId("5e8e3b1c9e5f92834d7f05ea")
}
> db.demo552.insertOne({values:50});{
   "acknowledged" : true, "insertedId" : ObjectId("5e8e3b1f9e5f92834d7f05eb")
}
> db.demo552.insertOne({values:40});{
   "acknowledged" : true, "insertedId" : ObjectId("5e8e3b289e5f92834d7f05ec")
}

在集合中使用 find() 方法显示所有文档 -

> db.demo552.find();

这将生成以下输出 -

{ "_id" : ObjectId("5e8e3b1c9e5f92834d7f05ea"), "values" : 10 }
{ "_id" : ObjectId("5e8e3b1f9e5f92834d7f05eb"), "values" : 50 }
{ "_id" : ObjectId("5e8e3b289e5f92834d7f05ec"), "values" : 40 }

以下是选择高于平均值的文档的查询 -

> var findAvg = db.demo552.aggregate([
...    { "$group": { "_id": "null", Average: { "$avg": "$values"} }}
... ]).toArray()[0]["Average"];
> db.demo552.find({ "values": { "$gt": findAvg } })

这将生成以下输出 -

{ "_id" : ObjectId("5e8e3b1f9e5f92834d7f05eb"), "values" : 50 }
{ "_id" : ObjectId("5e8e3b289e5f92834d7f05ec"), "values" : 40 }

更新于: 14-5 月-2020

397 次浏览

开启你的 职业生涯

完成课程并获得认证

开始学习
广告