проблема с $or оператором

Рейтинг: 0Ответов: 1Опубликовано: 10.04.2015

Я пытаюсь написать небольшое приложение с помощью meteor.js и столкнулся с проблемой. Я хочу сделать поиск в нескольких полях документов mongodb, но что-то идет не так. Ниже мой код.

search_query - вводимый пользователем текст

var reg = new RegExp(search_query);
if (search_query) {
    console.log(search_query, reg);
    return Pulsedb.find({
        description: reg
    }, {
        limit: limit
    });
}

Такая конструкция работает и находит документы, в поле description которых есть искомое значние. Однако мне нужно сделать проверку наличия совпадений в нескольких полях. Я пробую

if (search_query) {
    console.log(search_query, reg);
    return Pulsedb.find({
        $or: {
            description: reg,
            prerec: reg,
            name: reg,
            type: reg
        }
    }, {
        limit: limit
    });
}  

Я рассчитываю найти документы, хотя бы в одном поле которых есть совпадение с запросом. Но в результате запрос выдает мне вообще все имеющиеся в базе данные.
В чем может быть проблема?

Ответы

▲ 1Принят

Ошибка в $or. Нужно так

 $or: [{ description: reg}, {prerec: reg}, {name: reg}, {type: reg}]