mongodb 查找出生率低于20的所有国家,按地区分组,查找出生率最低的地区

gk7wooem  于 2023-01-01  发布在  Go
关注(0)|答案(1)|浏览(89)
{
    _id: ObjectId("63a9678da72f51f8dc89dfcf"),
    Country: 'Afghanistan',
    Region: 'ASIA (EX. NEAR EAST)',
    Population: 31056997,
    'Area (sq': { ' mi': { ')': 647500 } },
    'Net migration': '23,06',
    Climate: 0,
    Birthrate: 46.6,
    Deathrate: 20.34,
    Agriculture: 0.38,
   
  }

这是蒙戈收集数据。我需要找到所有国家出生率低于20,按地区分组,找到最低出生率地区

db.data.aggregate([{$group:{_id:{Country:"$Country"},Birthrate:{$lt:20}}}])

我试过这个,但没有得到输出。

wgx48brx

wgx48brx1#

可以使用以下聚合查询:

  • 第一个$match只有出生率低于期望值。
  • 然后$sort乘以Birthrate,以获得第一个位置的最小值。
  • 最后使用$first按区域排序$group。在对文档进行排序时,第一个值将是最小的。
db.collection.aggregate([
  {
    "$match": {
      "Birthrate": {
        "$lt": 20
      }
    }
  },
  {
    "$sort": {
      "Birthrate": 1
    }
  },
  {
    "$group": {
      "_id": "$Region",
      "Birthrate": {
        "$first": "$Birthrate"
      }
    }
  }
])

例如here
此外,如果您希望从文档中获取所有值,而不仅仅是Birthrate,则可以像使用this example一样使用"$first": "$$ROOT"

相关问题