以下の手順に従って、目的の応答を取得してください。
データ:
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.データエクスプローラー-データセットに移動-新しいデータセット-データソースを選択-データセット名を入力-[次へ]をクリック
2.コレクション名を入力します-devicestatus-すべてのフィールドを一覧表示します-コマンドタイプのドロップダウンから[集計]オプションを選択します-[式]をクリックします
3.式ビルダープロンプトに以下の式を追加します-[OK]をクリックします
以下の式 $ unwind
配列をフラット化して、devicestatus配列をドキュメントに分解し、その後に $プロジェクト
必須フィールドを保持します。
[
{"$unwind":"$deviceStatus"},
{"$project":{
"_id":0,
"className":1,
"deviceStatus.deviceName":1,
"deviceStatus.errorCode":1
}
}
]
または
以下の式は、devicestatus配列と $ map
>
および $ project
必須フィールドの後に $ unwind
配列をドキュメントに分解するためにフラット化します。
[{
"$project":{
"_id":0,
"className":1,
"deviceStatus":{
"$map":{
"input":"$deviceStatus",
"as":"result",
"in":{
"deviceName":"$$result.deviceName",
"errorCode":"$$result.errorCode"
}
}
}
}
},
{"$unwind":"$deviceStatus"}
]
または
4.更新することを確認します-[はい]をクリックします
5.使用可能なすべてのフィールドを選択した複数選択ドロップボックスに移動します-[完了]をクリックします
6.結果のプレビュー
{"className":"store", "deviceStatus":{"deviceName":"CardReader","errorCode":"97080301"}}
{"className":"store", "deviceStatus":{ "deviceName":"CashAcceptor","errorCode":"97080302,97080303"}}
{"className":"store","deviceStatus":{"deviceName":"CashDispenser","errorCode":""}}