地图函数

映射函数

名称 说明
MAP 根据一系列键值对构造一个映射值
MAP_GET 返回指定键在映射中的值
MAP_SET 返回一个更新了一系列键的映射副本
MAP_REMOVE 返回一个移除了指定一系列键的映射副本
MAP_MERGE 将一系列映射合并为一个映射。
CURRENT_CONTEXT 以映射的形式返回当前上下文。
MAP_KEYS 返回映射中所有键的数组。
MAP_VALUES 返回映射中所有值的数组。
MAP_ENTRIES 返回映射的键值对数组。

MAP

语法

map(key: STRING, value: ANY, ...) -> MAP

说明:

根据一系列键值对构造一个映射。

MAP_GET

语法

map_get(map: ANY, key: STRING) -> ANY

说明:

返回映射中指定键对应的值。如果 key 在映射中不存在,或者 map 参数不是 MAP,则返回 ABSENT 值。

Web

const result = await execute(db.pipeline()
  .collection("books")
  .select(
    field("awards").mapGet("pulitzer").as("hasPulitzerAward")
  )
);
Swift
let result = try await db.pipeline()
  .collection("books")
  .select([
    Field("awards").mapGet("pulitzer").as("hasPulitzerAward")
  ])
  .execute()

Kotlin

val result = db.pipeline()
    .collection("books")
    .select(
        field("awards").mapGet("pulitzer").alias("hasPulitzerAward")
    )
    .execute()

Java

Task<Pipeline.Snapshot> result = db.pipeline()
    .collection("books")
    .select(
        field("awards").mapGet("pulitzer").alias("hasPulitzerAward")
    )
    .execute();
Python
from google.cloud.firestore_v1.pipeline_expressions import Field

result = (
    client.pipeline()
    .collection("books")
    .select(Field.of("awards").map_get("pulitzer").as_("hasPulitzerAward"))
    .execute()
)

MAP_SET

语法

map_set(map: MAP, key: STRING, value: ANY, ...) -> MAP

说明:

返回 map 值的副本,其内容会由一系列键值对更新。

如果给定的值解析为缺失值,系统会从映射中移除其关联的键。

如果 map 实参不是 MAP,则返回缺失值。

MAP_REMOVE

语法

map_remove(map: MAP, key: STRING...) -> MAP

说明:

返回移除了指定一系列键的 map 值的副本。

MAP_MERGE

语法

map_merge(maps: MAP...) -> MAP

合并 2 个或多个映射的内容。如果多个映射具有冲突的值,则以最后一个映射中的值为准。

CURRENT_CONTEXT

语法

current_context() -> MAP

返回一个映射,其中包含当前执行点上的所有可用字段。

MAP_KEYS

语法

map_keys(map: MAP) -> ARRAY<STRING>

说明:

返回包含 map 值的所有键的数组。

MAP_VALUES

语法

map_values(map: MAP) -> ARRAY<ANY>

说明:

返回包含 map 值的所有值的数组。

MAP_ENTRIES

语法

map_entries(map: MAP) -> ARRAY<MAP>

说明:

返回包含 map 值中的所有键值对的数组。

每个键值对都将采用包含两个条目(kv)的映射形式。

示例

map map_entries(map)
{} []
{"foo" : 2L} [{"k": "foo", "v" : 2L}]
{"foo" : "bar", "bar" : "foo"} [{"k": "foo", "v" : "bar" }, {"k" : "bar", "v": "foo"}]