MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Projektuj tablicę obiektów do wartości klucza

Tak, używając $arrayToObject i $map aby przekonwertować istniejącą tablicę na format, który akceptuje:

db.collection.aggregate([
  { "$replaceRoot": {
    "newRoot": {
      "$arrayToObject": {
        "$concatArrays": [
          [{ "k": "date", "v": "$_id.date" }],  
          { "$map": {
            "input": "$aggr",
            "in": { "k": "$$this.gender", "v": "$$this.count" }
          }}
        ]
      }
    }    
  }}
])

Oczywiście, jeśli tak naprawdę jest to tylko „ogon” istniejącej agregacji i nie masz przynajmniej MongoDB 3.4.4, w której wprowadzony jest operator, możesz po prostu zmienić wynik w kodzie klienta:

db.collection.aggregate([
  // existing pipeline
]).map(d => 
  Object.assign(
    { date: d._id.date },
    d.aggr.reduce((acc,curr) =>
      Object.assign(acc,{ [curr.gender]: curr.count }),{}
    )
  )
)



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Wypełnij obiekt w tablicy

  2. Mangusta:głęboka populacja (wypełnij zaludnione pole)

  3. Zaktualizuj jedno pole w MongoDB w jednym osadzonym dokumencie

  4. MongoParseError:opcje useCreateIndex, useFindAndModify nie są obsługiwane

  5. Grupa i liczenie mangusty