Mongodb 在mongo查询中从数组中获取数据

Mongodb 在mongo查询中从数组中获取数据,mongodb,Mongodb,我有一个查询(db.vehicles.find({},{'cars.model':1})),它获取一些数据,这些数据看起来像 { _id:ObjectId(…), 汽车:[ { 模型:“foo” } ] } { _id:ObjectId(…), 汽车:[ { 模型:“foo” }, { 型号:“酒吧” } ] } 但我真的很想让它像 { _id: ObjectId(...), cars: [ 'foo' ] } { _id: ObjectId(...), cars: [ 'fo

我有一个查询(
db.vehicles.find({},{'cars.model':1})
),它获取一些数据,这些数据看起来像

{
_id:ObjectId(…),
汽车:[
{
模型:“foo”
}
]
}
{
_id:ObjectId(…),
汽车:[
{
模型:“foo”
},
{
型号:“酒吧”
}
]
}
但我真的很想让它像

{
  _id: ObjectId(...),
  cars: [ 'foo' ]
}
{
  _id: ObjectId(...),
  cars: [ 'foo', 'bar' ]
}
或者至少是数据没有嵌套的地方。我似乎不知道如何使用mongo,因为我对它还比较陌生

我还想知道,也许你不应该在mongo中做这种事情,因为看起来大多数查询都会保持数据的原样,但只需要获得你拥有的数据,然后进行过滤。也许我在尝试mongo查询时引入了太多PostgreSQL思想。

尝试下面的查询

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

@ViharManchala我要求的是json格式,不是吗?你的查询是找到一辆模型值为1的汽车。但你的模型的价值观是strings@jstarnate我认为查询是在查找所有汽车,第二个参数(投影)是说给我汽车模型由于
cars
属性的值是一个数组,使用
map()
返回每个
模型
值太好了,非常感谢!我还必须添加
{$project:{'cars.model':1}}
,以便忽略所有其他字段,但总体来说很棒。您使用
getCollection('vehicles')
而不只是执行
db.vehicles.aggregate
?您也可以使用db.vehicles.aggregate。没有区别。我的工具计算db.getCollection('vehicles')。默认情况下聚合