Обычно вы сохраняете их как отдельные документы, а не как отдельный документ как массив объектов, как данные отображаются в настоящее время.
Поскольку вы можете смешивать структуры документов, обычный шаблон дляразличать их значит иметь что-то вроде поля типа.('type' ни в коем случае не является особенным, просто наиболее распространенный выбор.)
Итак, ваш пример будет выглядеть так:
{
"Venue": "Venue1",
"Country": "AU",
"Locale": "QLD",
"type": "location"
}
...
{
"Venue": "Venue3",
"Country": "AU",
"Locale": "NSW",
"type": "location"
}
, где каждый объект JSON будет отдельным документом суникальный идентификатор документа.(Если у вас есть некоторые предварительно определенные данные, которые вы хотите загрузить, посмотрите на cbimport
, как добавить их в вашу базу данных. Есть несколько различных форматов для этого. Вы также можете сгенерировать идентификаторы документов для вас.)
Тогда то, что написал @vsr, правильно.Вы бы создали индекс в поле Locale
.Это будет оптимальным для запроса, который вы хотите.Обратите внимание, что вы также можете создать индекс для каждого документа с CREATE INDEX ix1 ON FooBar(Locale);
.В этом простом случае это не имеет значения.Прочитайте о функции объяснения запроса в консоли администратора, чтобы узнать, как ее использовать для оптимизации запросов.
Наконец, запрос @vsr также корректен:
SELECT * FROM FooBar WHERE type = "Location" AND Locale = "QLD";