地圖函式

對應函式

名稱 說明
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 值。

Node.js
const result = await db.pipeline()
  .collection("books")
  .select(
    field("awards").mapGet("pulitzer").as("hasPulitzerAward")
  )
  .execute();

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()
)
Java
Pipeline.Snapshot result =
    firestore
        .pipeline()
        .collection("books")
        .select(mapGet(field("awards"), "pulitzer").as("hasPulitzerAward"))
        .execute()
        .get();
Go
snapshot := client.Pipeline().
	Collection("books").
	Select(firestore.Fields(
		firestore.MapGet(firestore.FieldOf("awards"), "pulitzer").As("hasPulitzerAward"),
	)).
	Execute(ctx)

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 值中所有鍵/值組合的陣列。

每個鍵/值組合都會以對應的形式呈現,其中包含 k 和 v 兩個項目。

範例:

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