私は、MongoDB 集約フレームワークが非常に強力であることを発見しました。これは、オブジェクトを平坦化するための良いオプションのようです。私のスキーマでは、 という配列でサブオブジェクトの配列を使用していますmaterials
。の数materials
は可変ですが、特定のフィールドcategory
は配列内のオブジェクト全体で一意になります。集約フレームワークを使用して構造を平坦化し、フィールドの値に基づいてフィールドの名前を動的に変更したいと考えていcategory
ます。$project
とともに を使用してこれを達成する簡単な方法を見つけることができませんでした$cond
。方法はありますか?
マテリアル オブジェクトの配列の理由は、簡単な検索を可能にするためです。
たとえば{ 'materials.name' : 'XYZ' }
、「XYZ」が見つかったドキュメントをすべて引き戻します。
前後の文書の例
{
"_id" : ObjectId("123456"),
"materials" : [
{
"name" : "XYZ",
"type" : "Red",
...
"category" : "A"
},
{
"name" : "ZYX",
"type" : "Blue",
...
"category" : "B"
}]
}
に
{
"material_A_name" : "XYZ",
"material_A_type" : "Red",
...
"material_B_name" : "ZYX",
"material_B_type" : "Blue",
...
}