Могу ли я выполнить итерацию по полю документа объектного типа при запросе коллекции в облачном хранилище?

У меня есть коллекция "фу". Каждый документ в коллекции имеет свойство / поле «bar», которое представляет собой массив таких объектов:

foo = [{
    bar: [{
        id: "random_string",
        "status": "string"
    }, {
        id: "random_string",
        "status": "string2"
    }]
}, {
    bar: [{
        id: "random_string",
        "status": "string"
    }, {
        id: "random_string",
        "status": "string2"
    }]
}]

Я хочу получить возможность запрашивать базу данных, чтобы получить две разные коллекции, одну со всеми документами в коллекции "foo", которые имеют "string" в качестве значения хотя бы одного из объектов. в массиве «bar» и еще одна коллекция для всех документов, которые имеют «string2» в качестве значения по крайней мере одного из объектов в массиве «bar».

Это вообще возможно? Я довольно много борюсь с этим, поэтому любая помощь будет принята с благодарностью. Я также рад при необходимости изменить схему db, полностью открыт для предложений!


person Cyberpunker    schedule 24.04.2018    source источник


Ответы (1)


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

Кроме того, вам необходимо иметь возможность вызывать определенное поле в документе, чтобы выполнить запрос к нему. Без определенного поля для использования запрос не может использовать индекс для ускорения работы, и запрос никогда не будет масштабироваться в масштабе, предлагаемом Firestore.

person Doug Stevenson    schedule 24.04.2018