Я пытаюсь решить, как моделировать данные в firestore.
По сути, это приложение, в котором перечислены счастливые часы и другие специальные предложения, которые есть в ресторанах. Каждый ресторан / бар может иметь несколько специальных и счастливых часов в зависимости от дня недели.
Это очень упрощенный пример того, как я надеялся смоделировать данные:
name: "Margaritaville",
geo: {
latitude: 42,
longitude: -105
},
offers {
0: {Type: Happy Hours, Time: 3p-6p, Mon: 1, Tue: 1, Wed: 1, Thu: 1, Fri: 0, Sat: 0, Sun: 0 },
1: {Type: Happy Hours, Time: 2p-5p, Mon: 0, Tue: 0, Wed: 0, Thu: 0, Fri: 1, Sat: 1, Sun: 0},
2: {Type: Happy Hours, Time: All Day, Mon: 0, Tue: 0, Wed: 0, Thu: 0, Fri: 0, Sat: 0, Sun: 1},
3: {Type: Brunch Special, Time: 11a-2p, Mon: 0, Tue: 0, Wed: 0, Thu: 0, Fri: 0, Sat: 0, Sun: 1}
},
etc: "foo",
etc: "bar"
Я ХОЧУ сохранить все данные предложений в виде вложенного объекта внутри каждого бизнес-документа, а не в виде отдельной коллекции, так как для большинства запросов потребуется большая часть этой информации вместе с широтой / длиной, фотографиями, именем и др. c. Но ...
В конечном итоге я хочу иметь возможность создавать фильтры запросов по дням недели (понедельник, вторник и т. Д. 1017 *), предлагать время и типы предложений (Happy Hours, Brunch) и расстояние от пользователь, et c. Однако, как теперь моделируется информация, «предложения», которые создаются внутри каждого документа, упорядочены (0, 1, 2 и c), поэтому, если я хочу выполнить запрос всех ресторанов в пределах 10 миль, которые имеют Например, в понедельник, в день счастливого часа, я надеялся сделать что-то вроде этого:
db.collection("restaurants").where("offers.WILDCARD.days.Mon", "==", 1)
Обратите внимание, на "WILDCARD" выше. Есть ли способ сделать эту работу, или мне нужно перенести предложения в отдельную коллекцию или подборку? Я пытался обернуть голову вокруг ненормализации, я когда-либо работал только с SQL базами данных, поэтому я открыт для совета относительно того, как я должен думать об этом.