Запрос MongoDB с $ и и несколько $ или

Как указано вдокументация, это невозможно.

И запросы с несколькими выражениями, указывающими один и тот же оператор

Рассмотрим следующий пример:

db.inventory.find( {
    $and : [
        { $or : [ { price : 0.99 }, { price : 1.99 } ] },
        { $or : [ { sale : true }, { qty : { $lt : 20 } } ] }
    ]
} )

Этот запрос вернет все выбранные все документы, где:

значение поля цены равно 0,99 или 1,99, а значение поля продажи равно true или значение поля кол-во меньше 20.

Этот запрос не может быть создан с использованием неявной операции AND, поскольку он использует оператор $ или более одного раза.

Что такое обходной путь для запроса что-то вроде этого? Этот запрос не возвращает результатов на MongoDB 3.2. Я тестировал $ или блоки отдельно, и они работают нормально, но не тогда, когда они заключены в $ и блок. Я предположил, что неправильно прочитал документацию, что это не должно работать. Единственная альтернатива, которую я имею, - это отправить данные в ElasticSearch и запросить их там, но это также просто обходной путь.

{
    "$and": [
        {
            "$or": [
                {
                    "title": {
                        "$regex": "^.*html .*$",
                        "$options": "i"
                    }
                },
                {
                    "keywords": {
                        "$regex": "^.*html .*$",
                        "$options": "i"
                    }
                }
            ]
        },
        {
            "$or": [
                {
                    "public": true
                },
                {
                    "domain": "cozybid"
                }
            ]
        }
    ]
}

Ответы на вопрос(1)

Ваш ответ на вопрос