Оператор ИЛИ внутри запроса Где Активная запись

Эта страница на официальном сайте mongodb адресует точно этот вопрос:

http://docs.mongodb.org/ecosystem/tutorial/model-data- for-ruby-on-rails /

Когда мы показываем наш список историй, нам нужно будет показать имя пользователя, разместившего историю. Если бы мы использовали реляционную базу данных, мы могли бы выполнить соединение с пользователями и магазинами и получить все наши объекты в одном запросе. Но MongoDB не поддерживает объединения, и поэтому время от времени требуется бит денормализации. Здесь это означает кеширование атрибута «имя пользователя».

Реляционные пуристы уже чувствуют себя неловко, как будто мы нарушаем какой-то универсальный закон. Но давайте иметь в виду, что коллекции MongoDB не эквивалентны реляционным таблицам; каждая из которых служит уникальной проектной цели. Нормализованная таблица обеспечивает атомный изолированный кусок данных. Однако документ более тесно представляет собой объект в целом. В случае сайта социальных новостей можно утверждать, что имя пользователя является неотъемлемой частью истории, опубликованной.

1
задан Andres 17 March 2019 в 23:45
поделиться

1 ответ

Примечание: мне кажется, вы хотите И между этими условиями, а не ИЛИ. Думаю об этом. В любом случае, попробуйте

game_stickers_and_stickers = game_stickers.includes(:sticker)
game_stickers_and_stickers.where.not(stickers: {name: ['Ban','Closed','Block']}).where(placement_side: side) 

, чтобы фрагмент условия был преобразован в SQL

WHERE stickers.name NOT IN ('Ban', 'Closed', 'Block')
0
ответ дан Andres 17 March 2019 в 23:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: