$unwind 2 fields separately in mongodb queryとほぼ同じMongoDB集約クエリに関する質問があります。MongoDBは2つの埋め込み配列を別々に解きます
これはドキュメントです:
{
"_id" : "1",
"details" : {
"phonenumber" : [
"1",
"2"
],
"name" : [
"a",
"b"
]
}
}
そして私は私に次の結果を返します。クエリをフレームにしようとしています:
{ "_id" : "1", "phonenumber" : "1", "name" : null },
{ "_id" : "1", "phonenumber" : "2", "name" : null },
{ "_id" : "1", "phonenumber" : null, "name" : "a" },
{ "_id" : "1", "phonenumber" : null, "name" : "b" }
は、誰かがそれで私を助けていただけますか?
db.document.aggregate([ { $unwind: { path: "$details.name"} }, { $unwind: { path: "$details.phonenumber" } }, { $project: { _id: 1, name: "$details.name", phonenumber: "$details.phonenumber" } } ])
とクエリの上からの出力は次のとおりです:私は把握でき
最寄の解決策は、クエリに従うことであるMongoDB v3.4
で
{ "_id" : "1", "phonenumber" : "1", "name" : "a" },
{ "_id" : "1", "phonenumber" : "1", "name" : "b" },
{ "_id" : "1", "phonenumber" : "2", "name" : "a" },
{ "_id" : "1", "phonenumber" : "2", "name" : "b" }
あなたはあなたのコレクション内のドキュメントの完全な例を与えることができますか?あなたの試みでは、あなたは '$ details.email'を持っています。 –
集約パイプラインはシーケンシャルです。 1つのステージの出力が別のステージの入力になります。あなたがしようとしているのは、最初のデータを2つの段階に分岐することです。それは不可能です。 – RaR
@ᵈˑᵈˑ私は質問で「名前」の「email」フィールドを編集しました。それはタイプミスでした。 –