MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

créer un groupe et analyser les données de la liste de tableaux dans birt

Veuillez suivre les étapes ci-dessous pour obtenir la réponse souhaitée.

Données :

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.Explorateur de données – Aller à Ensembles de données – Nouvel ensemble de données – Sélectionner la source de données – Entrer le nom de l'ensemble de données – Cliquez sur Suivant

2. Entrez le nom de la collection - devicestatus - Répertorie tous les champs - Sélectionnez l'option Agréger dans la liste déroulante des types de commande - Cliquez sur Expression

3.Ajoutez l'expression ci-dessous dans l'invite du générateur d'expression - Cliquez sur OK

L'expression ci-dessous $unwind pour aplatir le tableau pour décomposer le tableau devicestatus en documents suivis de $project pour conserver les champs obligatoires.

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

OU

L'expression ci-dessous itère sur le tableau devicestatus et $map et $project les champs obligatoires suivis de $unwind à aplatir pour décomposer le tableau en documents.

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

OU

4.Confirmez pour actualiser - Cliquez sur oui

5.Déplacez tous les champs disponibles vers la liste déroulante à sélection multiple sélectionnée - Cliquez sur Terminer

6.Aperçu des résultats

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