首页 > 解决方案 > 在mongo查询中从数组中获取数据

问题描述

我有一个查询 ( db.vehicles.find( {}, { 'cars.model': 1 } )),它可以让我得到一些看起来像的数据

{
  _id: ObjectId(...),
  cars: [
    {
      model: 'foo'
    }
  ]
}
{
  _id: ObjectId(...),
  cars: [
    {
      model: 'foo'
    },
    {
      model: 'bar'
    }
  ]
}

但我真的很想让它返回类似的东西

{
  _id: ObjectId(...),
  cars: [ 'foo' ]
}
{
  _id: ObjectId(...),
  cars: [ 'foo', 'bar' ]
}

或者至少是数据没有嵌套的东西。我似乎无法弄清楚如何用 mongo 做到这一点,因为我对它比较陌生。

我还想知道您是否不应该在 mongo 中做这种事情,因为似乎大多数查询都将数据保持原样,但只是让您获得您拥有但经过过滤的数据。也许我在尝试 mongo 查询时带来了太多 PostgreSQL 的想法。

标签: mongodb

解决方案


试试下面的查询

db.getCollection('vehicles').aggregate([
    {
        $addFields: {
            cars : '$cars.model'
        }
    }
])

推荐阅读