MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

criando grupo e analisando dados da lista de matrizes em birt


Por favor, siga os passos abaixo para obter a resposta desejada.

Dados:
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.Data Explorer - Vá para Conjuntos de Dados - Novo Conjunto de Dados - Selecione Fonte de Dados - Insira o Nome do Conjunto de Dados - Clique em Avançar



2.Insira o nome da coleção - devicestatus - Lista todos os campos - Selecione a opção Agregar no menu suspenso do tipo de comando - Clique em Expressão



3. Adicione a expressão abaixo no prompt do construtor de expressões - Clique em OK



A expressão abaixo $unwind para achatar o array para decompor o array devicestatus em documentos seguido por $project para manter os campos obrigatórios.
[
  {"$unwind":"$deviceStatus"},
  {"$project":{
    "_id":0,
    "className":1,
   "deviceStatus.deviceName":1,
   "deviceStatus.errorCode":1
   }
  }
]

OU

A expressão abaixo itera sobre o array devicestatus e $map e $project os campos obrigatórios seguidos por $unwind para achatar para decompor a matriz em documentos.
[{
  "$project":{
    "_id":0,
    "className":1, 
    "deviceStatus":{
      "$map":{
        "input":"$deviceStatus",
        "as":"result",
        "in":{
          "deviceName":"$$result.deviceName",
          "errorCode":"$$result.errorCode"
        }
      }
    }
   }
 },
 {"$unwind":"$deviceStatus"}
]

OU

4.Confirme para atualizar - Clique em sim



5. Mova todos os campos disponíveis para a caixa de seleção múltipla selecionada - Clique em Concluir



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