MongoDB ИЛИ не на верхнем уровне - PullRequest
0 голосов
/ 14 июля 2020

Я пытаюсь создать такой запрос:

"i_field": {
    "$or": [{
            query_1
        }, {
            query_2
        }
    ]
}

Однако mon go выдает исключение "Can't canonicalize query: BadValue unknown operator: $or", так как я должен использовать $or на верхнем уровне (или это мое понимание пока ).

Рабочий ИЛИ в запросе верхнего уровня: (но это не то, что мне нужно)

"$or": [{
        "i_field": query_1
    }, {
        "i_field": query_2
    }
]

Есть ли у кого-нибудь предложения, как я могу заставить этот запрос работать ?

Изменить (реальный пример):

"i_field": {
    "$or": [{
            "$gte": 3.5,
            "$lt": 88.5
        }, {
            "$eq": null
        }
    ]
}

Ответы [ 2 ]

1 голос
/ 14 июля 2020

Размещение $or на верхнем уровне - это путь к go:

"$or":[
   { "i_field":{"$gte": 3.5, "$lt": 88.5}}, 
   { "i_field": null}
]

Игровая площадка

0 голосов
/ 14 июля 2020

Вместо этого используйте $ in:

{ "i_field": { "$in": [query_1, query_2] } }
...