У меня есть коллекция Parent
s, которые содержат EmbeddedThing
s, и каждый EmbeddedThing
содержит ссылку на созданный ею User
.mongodb: Это где я должен просто нормализовать свои внедренные объекты?
UserCollection: [
{
_id: ObjectId(…),
name: '…'
},
…
]
ParentCollection: [
{
_id: ObjectId(…),
EmbeddedThings: [
{
_id: 1,
userId: ObjectId(…)
},
{
_id: 2,
userId: ObjectId(…)
}
]
},
…
]
вскоре я понял, что мне нужно, чтобы получить все EmbeddedThing
с для данного пользователя, который мне удалось достичь с помощью карты/уменьшить:
"results": [
{
"_id": 1,
"value": [ `EmbeddedThing`, `EmbeddedThing`, … ]
},
{
"_id": 2,
"value": [ `EmbeddedThing`, `EmbeddedThing`, … ]
},
…
]
Является ли это, где я должен действительно просто нормализовать EmbeddedThing
в его собственной коллекции, или я должен сохранить карту/уменьшить, чтобы выполнить это? Возможно, какой-то другой дизайн?
Если это помогает, это для пользователей, чтобы увидеть их список EmbeddedThing
s по всем Parent
s, в отличие от какой-либо задачи отчетности/агрегации (что заставило меня понять, что я могу сделать это неправильно).
Спасибо!
Я люблю mongodb за его гибкость, но на самом деле ненавижу часть «это зависит», так как я должен думать о дополнительных материалах :) Поскольку это совершенно новый проект, я могу только угадать шаблон доступа. Кроме того, потому что он новый, я сосредоточен на простоте разработки, а не на скорости. Похоже, я должен просто держаться подальше от денормализации его в тот момент! – thatmarvin
@thatmarvin: Мышление хорошо для вас :) –