を楽しみながらおくつろぎいただけ$を使用する:あなたが見ることができるように、私はノードを表し文書を持って私は次のような構造を持つコレクション持つネストされたサブ文書
{
{
node: 'ST20'
Ds:{
699:{
TotCM: 300
Docsis20: 200
Docsis30: 100
}
705:{
TotCM: 250
Docsis20: 150
Docsis30: 100
}
}
}
{
node: 'ST21'
Ds:{
651:{
TotCM: 200
Docsis20: 100
Docsis30: 100
}
699:{
TotCM: 100
Docsis20: 0
Docsis30: 100
}
}
}
}
を。各ノードは、異なるチャネルを有する。私の目的は、私が各チャンネルで持っているケーブルモデムの数を確認することです。私は各ノードにあるチャンネルを前もって知りません。
{ node: 'ST20', Ds: 699, TotCM: 300, Docsis20: 200, Docsis30:100 }
{ node: 'ST20', Ds: 705, TotCM: 250, Docsis20: 150, Docsis30:100 }
{ node: 'ST21', Ds: 651, TotCM: 200, Docsis20: 100, Docsis30:100 }
{ node: 'ST21', Ds: 699, TotCM: 100, Docsis20: 0, Docsis30:100 }
は、私は次のクエリを試してみました:だから私はこのような何かを持っていると思い
db.statsNodos.aggregate(
{ $project: {_id:0,Ds:1,node:1}},
{ $unwind: "$Ds"}
).pretty()
しかし、私は、元の文書を取得します。ご覧のとおり、これらはネストされたドキュメントであり、一連のドキュメントではありません。たぶん私は$unwind
を使用する必要はありませんし、これを得る別の方法があります。教えて頂けますか?
'' $ unwind''は配列に対してのみ動作します[''オペランドが配列には解決されないが、欠落、ヌル、または空の配列でない場合、$ unwindはオペランドを単一の要素配列として扱います。 '](https://docs.mongodb.com/manual/reference/operator/aggregation/unwind/#non-array-field-path)あなたはあなたのjsonを修正する必要があります(実際にはjsonではないため)isnここに行く道はない。 – Skami