sql >> Base de Datos >  >> NoSQL >> MongoDB

creando grupos y analizando datos de la lista de arreglos en birt

Siga los pasos a continuación para obtener la respuesta deseada.

Datos:

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.Explorador de datos - Ir a Conjuntos de datos - Nuevo conjunto de datos - Seleccionar fuente de datos - Nombre del conjunto de datos de entrada - Hacer clic en Siguiente

2. Ingrese el nombre de la colección:estado del dispositivo:enumera todos los campos:seleccione la opción Agregado en el menú desplegable del tipo de comando:haga clic en Expresión

3.Agregue la siguiente expresión en el indicador del generador de expresiones:haga clic en Aceptar

La siguiente expresión $unwind para aplanar la matriz para descomponer la matriz de estado de dispositivos en documentos seguidos de $project para mantener los campos obligatorios.

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

O

La siguiente expresión itera sobre la matriz de estado de dispositivos y $map y $project los campos obligatorios seguidos de $unwind para aplanar para descomponer la matriz en documentos.

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

O

4.Confirme para actualizar:haga clic en sí

5. Mueva todos los campos disponibles al cuadro desplegable de selección múltiple seleccionado:haga clic en Finalizar

6.Vista previa de los resultados

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