theblabs
@theblabs

Как в Mongo сделать выборку данных по одной сущности с оператором ИЛИ?

Записываем в монгу прогресс пользователей, которые получили награды и выполнили задания

Задача 1: Показать всех пользователей, которые
1. Получили награду Х и Награду У
И
2. Выполнили задание Х и задание У

Задача 2: Показать всех пользователей, которые
1. Получили награду Х или Награду У
И
2. Выполнили задание Х или задание У

Предположение:
rewardId in (1) and rewardId in (2) and rewardId in (3) and taskId in (1)
  • Вопрос задан
  • 31 просмотр
Пригласить эксперта
Ответы на вопрос 1
@NinjaNickName
Web разработчик
Получили награду Х или Награду У

{$or : [{rewardId : 1}, {rewardId : 2}]}

и так еще можно
{rewardId : {$in : [1, 2]}}

Задача 2: Показать всех пользователей, которые
1. Получили награду Х или Награду У
И
2. Выполнили задание Х или задание У

{$or : [{rewardId : 1}, {rewardId : 2}],
 $or: [ { taskId : { $eq: 1 } }, { taskId : { $eq: 2} }]
}


Логические операции, $or, $and, $where, mapReduce

Сложные запросы можно еще вот так делать:
db.foo.find({$where : function() { 
  return (this.cost>5 && this.cost<10 )|| (this.is_hidden != 1) || (this.link == this.url);
}})

Источник
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы