【问题标题】:Google Firestore - Access keys/values inside of an array/map in queryGoogle Firestore - 在查询中访问数组/映射内的键/值
【发布时间】:2020-03-21 13:24:32
【问题描述】:

我目前正在尝试在此处访问文档中的信息。我实际上不知道那是什么数据结构。起初我以为它是一个数组,现在是一个映射,但甚至可能是键/值对?

我用来初始化它的代码是:

$data = [
    'additional_email_info' => 'true',
    'address' => $addressData,
      ...
     ]

地址在它之前以相同的方式声明。 我当前尝试访问“城市”字段的代码:

$docRef = $db->collection('activities');
$query = $docRef->where('address', 'in', [$city_search]);
$documents = $query->documents();

我设法在其他字段中检索了地址之外的信息,但我不确定如何访问该字段中的该字段,并且在他们的页面https://cloud.google.com/firestore/docs/query-data/queries 上几乎没有关于它的文档。

【问题讨论】:

    标签: php database data-structures google-cloud-firestore


    【解决方案1】:

    如果 Firestore 文档中的字段具有子字段,则访问该字段时返回的值是字典/数组。因此,您可以通过以下方式访问示例文档所在的城市:

    $docRef = $db->collection('activities');
    $query = $docRef->where('address', 'in', [$city_search]);
    $documents = $query->documents();
    
    foreach ($documents as $city) {
        printf('Doc : %s' . PHP_EOL, $city->id());
        printf('Date: %s' . PHP_EOL, $city['date']);
        printf('City: %s' . PHP_EOL, $city['address']['city']);
        printf(PHP_EOL);
    }
    

    如果你想查询城市,你会使用点符号

    $docRef->where('address.city', '=', 'London');
    

    【讨论】:

    • 非常感谢!非常翔实的答案。这部分是我用过的,我这辈子都不知道怎么做!再次感谢。
    猜你喜欢
    • 2019-07-03
    • 2014-12-28
    • 2019-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-29
    • 2020-01-31
    • 2017-05-27
    相关资源
    最近更新 更多