8

私は、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",
...
}
4

2 に答える 2

6

jira https://jira.mongodb.org/browse/SERVER-5947でこのようなリクエストがあります- この機能が必要な場合は投票してください。

一方、キーの可能な値 (つまり、「カテゴリ」のすべての一意の値) を前もって知っていれば、回避策があり、私のブログにいくつかのサンプル コードがあります。

于 2013-09-01T20:46:28.063 に答える