как выбрать все значения конкретного ключа из массива объектов - PullRequest
1 голос
/ 25 февраля 2020

Ниже приведена коллекция в 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 } 
] }

Есть ли запрос? получить все значения «продаж» из «данных».

1 Ответ

1 голос
/ 25 февраля 2020

Вы имеете в виду это:

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
    ]
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...