У меня есть документ, который представляет собой магазин с рекламой следующим образом:MongoDB - Вставить документ с _id в ребенок
{name: "name of store",
address: "address of store",
advertisements: [{title: "title of advertising", desc: "desc of advertising"}]
}
Для увеличения скорости чтения и вставить или найти рекламу из этого магазина легко, но, удалить конкретную рекламу, как я могу это сделать?
Есть способ добавить поле _id в элемент внутри массива объявлений? Таким образом, я мог найти конкретный элемент _id.
Мне не нравится подход, который использует $ elemMatch, чтобы найти элемент по вашему имени или другому полю, которое не является идентификатором _id.
Спасибо!
Да, я согласен с вами. Но, моя проблема в том, что мне нужно найти только некоторые магазины, не все. Итак, если у меня есть две отдельные коллекции (магазины и рекламные объявления), мне нужно: 1) получить все магазины по моим критериям. 2) Для каждого магазина, получите все рекламные объявления из этого магазина. Так что, если бы у меня было 100 магазинов, и у каждого магазина было 10 рекламных объявлений, будет ста запросов на сбор рекламы! Плюс цикл для итерации! Вот почему я предпочитаю иметь только одну коллекцию. – vitorvigano
Не следует вашей логике. Вы должны иметь возможность запрашивать критерии соответствия «хранилище соответствия» и «соответствия рекламы» в одной операции поиска. Возможно, вам следует расширить свой вопрос, чтобы показать небольшой образец документов с критериями, которые вы пытаетесь сопоставить, а не просто показывать их. Вы просто не указали в комментариях, о которых вы просите. –