ネストされた配列形式のデータを含むドキュメントのコレクションと、異なる形式の配列リストがあります。
入力:
{
"_id" : ObjectId("5262d2eaca24d995f4958083"),
"array" : [
{
"name" : "sam",
"roll" : 21
},
{
"name" : "vam",
"roll" : 22
},
{
"name" : "mam",
"roll" : 23
},
{
"name" : "jam",
"roll" : [31, 32, 33, 34]
},
{
"name" : [
{"name" : "lam" },
{"name" : "ham" },
{"name" : "pam" }
],
"roll" :[
{"roll" : 41},
{"roll" : 42},
{"roll" : 43}
]
}
]
}
(上記のコードでは、array[4] はその前任者と比較して異なる形式を持っています)
配列[4]のすべての名前、つまりlam、ham、pamを取得したい
望ましい出力:
ラムハムパム
_
_
私のアプローチ:次のコードを試しました
db.test1.find().forEach(function(x)
{
x.array.forEach(function(y)
{
y.name.forEach(function(z)
{
print(z.name);
})
})
})
しかし、これによりエラーの理由が次のようになります。
エラー: Sam にはメソッド 'forEach' がありません:
名前 (arraylist 1) をループしようとしますが、データが 1 つしかないため、つまり 'sam' であるため、forEach はこれに対して機能しません。forEach は連想配列に対してのみ機能します。
参考までに、入れ子になった配列に対して同じコードを試したところ、すべてのリストで配列形式が同じで、目的の出力を得ることができました。
mongoシェルを使用してコードを正しく取得するのを手伝ってください。
前もって感謝します:)