以下是MongoDB中名称为“ auto_sales”的集合,我想从作为对象数组的数据中选择“ sales”的所有值。

Collection-
{
"name" : "auto_sales",
"data" : [
{ "sales" : 10,
  "temp" : 50 },

{ "sales" : 9,
"temp" : 51 },

{"sales" : 8,
"temp" : 55 },

{"sales" : 57,
"temp" : 7 },

{"sales" : 58,
"temp" : 8 }
] }


是否有任何查询要从“数据”中获取“销售”的所有值。

最佳答案

您是说这个意思吗?

db.collection.find(
   {},
   { "data.sales": 1 }
)




{
    "_id" : ObjectId("5e55400d22139e9b31aa786e"),
    "data" : [
        {
            "sales" : 10.0
        },
        {
            "sales" : 9.0
        },
        {
            "sales" : 8.0
        },
        {
            "sales" : 57.0
        },
        {
            "sales" : 58.0
        }
    ]
}


或者更确切地说:

db.collection.aggregate([
   {
      $project: {
         sales: {
            $reduce: {
               input: "$data",
               initialValue: [],
               in: { $concatArrays: ["$$value", ["$$this.sales"]] }
            }
         }
      }
   }
])


要么

db.collection.aggregate([
  {
    $project: {
      sales: {
        $map: {
          input: "$data",
          in: "$$this.sales"
        }
      }
    }
  }
])




{
    "_id" : ObjectId("5e55400d22139e9b31aa786e"),
    "sales" : [
        10.0,
        9.0,
        8.0,
        57.0,
        58.0
    ]
}

08-15 18:25