MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

creazione di un gruppo e analisi dei dati dall'elenco di array in bit

Segui i passaggi seguenti per ottenere la risposta desiderata.

Dati:

db.devicestatus.insert([
  {
    "_id": "0001",
    "className":"store",
    "deviceStatus": [ {
    "deviceName": "CardReader",
    "errorCode": "97080301",
    "status": "Bad"
  },
  {
    "deviceName": "CashAcceptor",
    "errorCode": "97080302,97080303",
    "status": "Bad"
  },
  {
    "deviceName": "CashDispenser",
    "errorCode": "",
    "status": "Good"
  }]
  }
])

1. Esplora dati - Vai a Set di dati - Nuovo set di dati - Seleziona l'origine dati - Inserisci il nome del set di dati - Fai clic su Avanti

2.Inserisci il nome della raccolta - devicestatus - Elenca tutti i campi - Seleziona l'opzione Aggrega dal menu a discesa del tipo di comando - Fai clic su Espressione

3.Aggiungi l'espressione seguente nel prompt del generatore di espressioni:fai clic su OK

L'espressione seguente $unwind per appiattire l'array per scomporre l'array devicestatus in documenti seguiti da $project per mantenere i campi obbligatori.

[
  {"$unwind":"$deviceStatus"},
  {"$project":{
    "_id":0,
    "className":1,
   "deviceStatus.deviceName":1,
   "deviceStatus.errorCode":1
   }
  }
]

O

L'espressione seguente scorre su devicestatus array e $map e $project i campi obbligatori seguiti da $unwind appiattire per scomporre l'array in documenti.

[{
  "$project":{
    "_id":0,
    "className":1, 
    "deviceStatus":{
      "$map":{
        "input":"$deviceStatus",
        "as":"result",
        "in":{
          "deviceName":"$$result.deviceName",
          "errorCode":"$$result.errorCode"
        }
      }
    }
   }
 },
 {"$unwind":"$deviceStatus"}
]

O

4.Conferma per aggiornare:fare clic su Sì

5.Sposta tutti i campi disponibili nella casella di riepilogo a selezione multipla selezionata:fai clic su Fine

6. Anteprima risultati

{"className":"store", "deviceStatus":{"deviceName":"CardReader","errorCode":"97080301"}}
{"className":"store", "deviceStatus":{ "deviceName":"CashAcceptor","errorCode":"97080302,97080303"}}
{"className":"store","deviceStatus":{"deviceName":"CashDispenser","errorCode":""}}