Firestore (массив-содержит-любой) оператор запроса

#google-cloud-firestore

#google-облако-firestore

Вопрос:

Я новичок в firestore. Я в замешательстве, каким будет результат этого кода.

 collection ("products").where (
    "category" ,
    "array-contains-any" , ["Appliances" , "Electronics"]
)
  

Вы можете просто написать название документа. (Например, документ 1, документ 3)
Документ показан на изображении.

Изображение документа продуктов

Для получения дополнительной информации посетите эту страницу

Ответ №1:

Это просто! Давайте рассмотрим этот сценарий, в котором все значения представлены в виде строк.

введите описание изображения здесь

массив-содержит-любой

Параметр: (Строка, ‘array-contains-any’ , массив)

 collection("products").where( "category" , "array-contains-any" , ["Appliances" , "Electronics"])
  

В результате мы получим документы, которые имеют category либо Appliances , либо Electronics
Результат: [ ‘Тостер’, ‘Радионяня’, ‘Проигрыватель Blu-ray’]

массив-содержит

Параметр: (Строка, ‘array-contains’ , Строка)

 collection("products").where( "category" , "array-contains" , "Appliances")
  

Это дало бы нам документы в качестве результата, который имеет category с Appliances
Результат: [ ‘Тостер’, ‘Радионяня’]

Итак, это означает, что когда у вас есть несколько элементов для поиска, мы можем использовать array-contains-any, или же, если вы хотите, чтобы в массиве присутствовал один элемент, тогда мы можем использовать array-contains

Ответ №2:

Запрос напечатает любые документы, в category поле которых есть любое из значений [«Бытовая техника», «Электроника»].

Таким образом, запрос будет извлекать документы:

  • Toaster потому что он имеет Appliances значение в category .
  • Baby Monitor потому что в нем есть оба Appliances и Electronics в category .
  • Blu-ray Player потому что он имеет Electronics значение в category .

Однако запрос не вернет Lipstick результат, поскольку в этом документе нет ни Appliances ни Electronics в его category поле.