EmbeddedThing
を含むParent
のコレクションがあり、それぞれEmbeddedThing
には、それを作成したUser
への参照が含まれています。mongodb:埋め込まれたオブジェクトを正規化する場所ですか?
UserCollection: [
{
_id: ObjectId(…),
name: '…'
},
…
]
ParentCollection: [
{
_id: ObjectId(…),
EmbeddedThings: [
{
_id: 1,
userId: ObjectId(…)
},
{
_id: 2,
userId: ObjectId(…)
}
]
},
…
]
私はすぐに減らす/私はマップを使用して達成するために管理され、私は特定のユーザーのすべてのEmbeddedThing
秒を取得する必要があることに気づい:私は本当にただへEmbeddedThing
を正常化すべきところ
"results": [
{
"_id": 1,
"value": [ `EmbeddedThing`, `EmbeddedThing`, … ]
},
{
"_id": 2,
"value": [ `EmbeddedThing`, `EmbeddedThing`, … ]
},
…
]
はこれです自分のコレクション、またはこれを達成するためにマップ/リダクションを維持する必要がありますか?おそらく他のデザイン?
これは役立つ場合は、Parent
の間にEmbeddedThing
のリストを表示することです。報告/集計タスクの一部ではありません(このことが間違っている可能性があります)。
ありがとうございます! 「埋め込むために埋め込んだりしないように:それが問題だ」
私はmongodbの柔軟性が大好きですが、余分なものについて考えなければならないので、本当に「それは依存している」部分が嫌いです。これは全く新しいプロジェクトなので、私はアクセスパターンを推測することしかできません。また、新しいので、私はスピードではなく、開発の容易さに焦点を当てています。私はちょうどその時それを非正規化することから離れるべきであるように聞こえる! – thatmarvin
@thatmarvin:思考はあなたのために良いです:) –