دوال السلاسل

دوال السلاسل

الاسم الوصف
BYTE_LENGTH تعرض عدد BYTES في قيمة STRING أو BYTES
CHAR_LENGTH تعرض عدد أحرف يونيكود في قيمة STRING
STARTS_WITH تعرض هذه الدالة TRUE إذا كانت السمة STRING تبدأ ببادئة معيّنة
ENDS_WITH تعرض هذه الدالة القيمة TRUE إذا كانت السلسلة STRING تنتهي بلاحقة معيّنة
LIKE تعرض هذه الدالة TRUE إذا تطابق STRING مع نمط معيّن
REGEX_CONTAINS تعرض هذه الدالة القيمة TRUE إذا كانت القيمة مطابقة بشكل جزئي أو كامل لتعبير عادي
REGEX_FIND تعرض هذه الدالة السلسلة الفرعية الأولى التي تطابق تعبيرًا عاديًا، أو NULL في حال عدم العثور على أي تطابق.
REGEX_FIND_ALL تعرض هذه الدالة مصفوفة من جميع السلاسل الفرعية التي تتطابق مع تعبير عادي، أو مصفوفة فارغة في حال عدم العثور على أي تطابقات.
REGEX_MATCH لعرض TRUE إذا كان أي جزء من القيمة يتطابق مع تعبير عادي
STRING_CONCAT لدمج عدة STRING في STRING
STRING_CONTAINS تعرض هذه الدالة TRUE إذا كانت القيمة تحتوي على STRING
STRING_INDEX_OF تعرض هذه الدالة الفهرس المستند إلى 0 لأول تكرار لقيمة STRING أو BYTES.
TO_UPPER تحوِّل قيمة STRING أو BYTES إلى أحرف كبيرة.
TO_LOWER تحوّل قيمة STRING أو BYTES إلى أحرف لاتينية صغيرة.
SUBSTRING تحصل على سلسلة فرعية من قيمة STRING أو BYTES.
STRING_REVERSE لعكس قيمة STRING أو BYTES
STRING_REPEAT تكرّر قيمة STRING أو BYTES لعدد محدّد من المرات.
STRING_REPLACE_ALL يستبدل كل تكرارات قيمة STRING أو BYTES.
STRING_REPLACE_ONE يستبدل هذا الإجراء أول ظهور لقيمة STRING أو BYTES.
TRIM تزيل هذه الدالة الأحرف البادئة واللاحقة من قيمة STRING أو BYTES.
LTRIM تزيل هذه الدالة الأحرف البادئة من قيمة STRING أو BYTES.
RTRIM تزيل هذه الدالة الأحرف اللاحقة من قيمة STRING أو BYTES.
SPLIT تقسّم قيمة STRING أو BYTES إلى مصفوفة.

BYTE_LENGTH

البنية:

byte_length[T <: STRING | BYTES](value: T) -> INT64

الوصف:

تعرض عدد BYTES في قيمة STRING أو BYTES.

أمثلة:

القيمة byte_length(value)
"abc" 3
"xyzabc" 6
b"abc" 3
Node.js
const result = await db.pipeline()
  .collection("books")
  .select(
    field("title").byteLength().as("titleByteLength")
  )
  .execute();

Web

const result = await execute(db.pipeline()
  .collection("books")
  .select(
    field("title").byteLength().as("titleByteLength")
  )
);
Swift
let result = try await db.pipeline()
  .collection("books")
  .select([
    Field("title").byteLength().as("titleByteLength")
  ])
  .execute()

Kotlin

val result = db.pipeline()
    .collection("books")
    .select(
        field("title").byteLength().alias("titleByteLength")
    )
    .execute()

Java

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

result = (
    client.pipeline()
    .collection("books")
    .select(Field.of("title").byte_length().as_("titleByteLength"))
    .execute()
)
Java
Pipeline.Snapshot result =
    firestore
        .pipeline()
        .collection("books")
        .select(byteLength(field("title")).as("titleByteLength"))
        .execute()
        .get();
متابعة
snapshot := client.Pipeline().
	Collection("books").
	Select(firestore.Fields(
		firestore.ByteLength(firestore.FieldOf("title")).As("titleByteLength"),
	)).
	Execute(ctx)

CHAR_LENGTH

البنية:

char_length(value: STRING) -> INT64

الوصف:

تعرض عدد قيم مواضع رموز يونيكود في القيمة STRING.

أمثلة:

القيمة char_length(value)
"abc" 3
"مرحبًا" 5
"العالم" 5
Node.js
const result = await db.pipeline()
  .collection("books")
  .select(
    field("title").charLength().as("titleCharLength")
  )
  .execute();

Web

const result = await execute(db.pipeline()
  .collection("books")
  .select(
    field("title").charLength().as("titleCharLength")
  )
);
Swift
let result = try await db.pipeline()
  .collection("books")
  .select([
    Field("title").charLength().as("titleCharLength")
  ])
  .execute()

Kotlin

val result = db.pipeline()
    .collection("books")
    .select(
        field("title").charLength().alias("titleCharLength")
    )
    .execute()

Java

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

result = (
    client.pipeline()
    .collection("books")
    .select(Field.of("title").char_length().as_("titleCharLength"))
    .execute()
)
Java
Pipeline.Snapshot result =
    firestore
        .pipeline()
        .collection("books")
        .select(charLength(field("title")).as("titleCharLength"))
        .execute()
        .get();
متابعة
snapshot := client.Pipeline().
	Collection("books").
	Select(firestore.Fields(
		firestore.CharLength(firestore.FieldOf("title")).As("titleCharLength"),
	)).
	Execute(ctx)

STARTS_WITH

البنية:

starts_with(value: STRING, prefix: STRING) -> BOOLEAN

الوصف:

تعرض TRUE إذا كانت value تبدأ بـ prefix.

أمثلة:

القيمة بادئة starts_with(value, prefix)
"abc" "a" صحيح
"abc" "b" خطأ
"abc" "" صحيح
Node.js
const result = await db.pipeline()
  .collection("books")
  .select(
    field("title").startsWith("The")
      .as("needsSpecialAlphabeticalSort")
  )
  .execute();

Web

const result = await execute(db.pipeline()
  .collection("books")
  .select(
    field("title").startsWith("The")
      .as("needsSpecialAlphabeticalSort")
  )
);
Swift
let result = try await db.pipeline()
  .collection("books")
  .select([
    Field("title").startsWith("The")
      .as("needsSpecialAlphabeticalSort")
  ])
  .execute()

Kotlin

val result = db.pipeline()
    .collection("books")
    .select(
        field("title").startsWith("The")
            .alias("needsSpecialAlphabeticalSort")
    )
    .execute()

Java

Task<Pipeline.Snapshot> result = db.pipeline()
    .collection("books")
    .select(
        field("title").startsWith("The")
            .alias("needsSpecialAlphabeticalSort")
    )
    .execute();
Python
from google.cloud.firestore_v1.pipeline_expressions import Field

result = (
    client.pipeline()
    .collection("books")
    .select(
        Field.of("title").starts_with("The").as_("needsSpecialAlphabeticalSort")
    )
    .execute()
)
Java
Pipeline.Snapshot result =
    firestore
        .pipeline()
        .collection("books")
        .select(startsWith(field("title"), "The").as("needsSpecialAlphabeticalSort"))
        .execute()
        .get();
متابعة
snapshot := client.Pipeline().
	Collection("books").
	Select(firestore.Fields(
		firestore.StartsWith(firestore.FieldOf("title"), "The").As("needsSpecialAlphabeticalSort"),
	)).
	Execute(ctx)

ENDS_WITH

البنية:

ends_with(value: STRING, postfix: STRING) -> BOOLEAN

الوصف:

تعرض TRUE إذا كانت value تنتهي بـ postfix.

أمثلة:

القيمة postfix ends_with(value, postfix)
"abc" "c" صحيح
"abc" "b" خطأ
"abc" "" صحيح
Node.js
const result = await db.pipeline()
  .collection("inventory/devices/laptops")
  .select(
    field("name").endsWith("16 inch")
      .as("16InLaptops")
  )
  .execute();
Swift
let result = try await db.pipeline()
  .collection("inventory/devices/laptops")
  .select([
    Field("name").endsWith("16 inch")
      .as("16InLaptops")
  ])
  .execute()

Kotlin

val result = db.pipeline()
    .collection("inventory/devices/laptops")
    .select(
        field("name").endsWith("16 inch")
            .alias("16InLaptops")
    )
    .execute()

Java

Task<Pipeline.Snapshot> result = db.pipeline()
    .collection("inventory/devices/laptops")
    .select(
        field("name").endsWith("16 inch")
            .alias("16InLaptops")
    )
    .execute();
Python
from google.cloud.firestore_v1.pipeline_expressions import Field

result = (
    client.pipeline()
    .collection("inventory/devices/laptops")
    .select(Field.of("name").ends_with("16 inch").as_("16InLaptops"))
    .execute()
)
Java
Pipeline.Snapshot result =
    firestore
        .pipeline()
        .collection("inventory/devices/laptops")
        .select(endsWith(field("name"), "16 inch").as("16InLaptops"))
        .execute()
        .get();
متابعة
snapshot := client.Pipeline().
	Collection("inventory/devices/laptops").
	Select(firestore.Fields(
		firestore.EndsWith(firestore.FieldOf("name"), "16 inch").As("`Laptops16in`"),
	)).
	Execute(ctx)

أعجبني

البنية:

like(value: STRING, pattern: STRING) -> BOOLEAN

الوصف:

تعرض TRUE إذا كانت value تتطابق مع pattern.

أمثلة:

القيمة نموذج like(value, pattern)
"Firestore" "Fire%" صحيح
"Firestore" "%store" صحيح
"Datastore" "Data_tore" صحيح
"100%" "100\%" صحيح
Node.js
const result = await db.pipeline()
  .collection("books")
  .select(
    field("genre").like("%Fiction")
      .as("anyFiction")
  )
  .execute();

Web

const result = await execute(db.pipeline()
  .collection("books")
  .select(
    field("genre").like("%Fiction")
      .as("anyFiction")
  )
);
Swift
let result = try await db.pipeline()
  .collection("books")
  .select([
    Field("genre").like("%Fiction")
      .as("anyFiction")
  ])
  .execute()

Kotlin

val result = db.pipeline()
    .collection("books")
    .select(
        field("genre").like("%Fiction")
            .alias("anyFiction")
    )
    .execute()

Java

Task<Pipeline.Snapshot> result = db.pipeline()
    .collection("books")
    .select(
        field("genre").like("%Fiction")
            .alias("anyFiction")
    )
    .execute();
Python
from google.cloud.firestore_v1.pipeline_expressions import Field

result = (
    client.pipeline()
    .collection("books")
    .select(Field.of("genre").like("%Fiction").as_("anyFiction"))
    .execute()
)
Java
Pipeline.Snapshot result =
    firestore
        .pipeline()
        .collection("books")
        .select(like(field("genre"), "%Fiction").as("anyFiction"))
        .execute()
        .get();
متابعة
snapshot := client.Pipeline().
	Collection("books").
	Select(firestore.Fields(
		firestore.Like(firestore.FieldOf("genre"), "%Fiction").As("anyFiction"),
	)).
	Execute(ctx)

REGEX_CONTAINS

البنية:

regex_contains(value: STRING, regexp: STRING | REGEX) -> BOOLEAN

الوصف:

تعرض هذه الدالة TRUE إذا كان جزء من value يتطابق مع regexp. إذا لم تكن السمة regexp تعبيرًا عاديًا صالحًا، ستعرض هذه الدالة error.

يمكن أن تكون الوسيطة regexp أيضًا قيمة REGEX تم إنشاؤها باستخدام regex("pattern", "options"). يتيح لك هذا التنسيق تقديم خيارات التعبير العادي مع النمط. الخيارات المتاحة هي:

  • ‫i: مطابقة غير حساسة لحالة الأحرف
  • ‫m: وضع الأسطر المتعددة (يتطابق ^ و$ مع بداية الأسطر أو نهايتها).
  • s: وضع Dotall (تطابق . الأسطر الجديدة).

إذا كان regexp عبارة عن STRING، لن يتم تطبيق أي خيارات باستثناء تلك المضمّنة في النمط نفسه (مثل (?i)).

تتّبع التعبيرات العادية بنية مكتبة re2.

أمثلة:

القيمة التعبير العادي regex_contains(value, regexp)
"Firestore" "Fire" صحيح
"Firestore" "store$" صحيح
"Firestore" "data" خطأ
"Firestore" regex("fire", "i") صحيح
"Firestore" regex("FIRE", "") خطأ
Node.js
const result = await db.pipeline()
  .collection("documents")
  .select(
    field("title").regexContains("Firestore (Enterprise|Standard)")
      .as("isFirestoreRelated")
  )
  .execute();

Web

const result = await execute(db.pipeline()
  .collection("documents")
  .select(
    field("title").regexContains("Firestore (Enterprise|Standard)")
      .as("isFirestoreRelated")
  )
);
Swift
let result = try await db.pipeline()
  .collection("documents")
  .select([
    Field("title").regexContains("Firestore (Enterprise|Standard)")
      .as("isFirestoreRelated")
  ])
  .execute()

Kotlin

val result = db.pipeline()
    .collection("documents")
    .select(
        field("title").regexContains("Firestore (Enterprise|Standard)")
            .alias("isFirestoreRelated")
    )
    .execute()

Java

Task<Pipeline.Snapshot> result = db.pipeline()
    .collection("documents")
    .select(
        field("title").regexContains("Firestore (Enterprise|Standard)")
            .alias("isFirestoreRelated")
    )
    .execute();
Python
from google.cloud.firestore_v1.pipeline_expressions import Field

result = (
    client.pipeline()
    .collection("documents")
    .select(
        Field.of("title")
        .regex_contains("Firestore (Enterprise|Standard)")
        .as_("isFirestoreRelated")
    )
    .execute()
)
Java
Pipeline.Snapshot result =
    firestore
        .pipeline()
        .collection("documents")
        .select(
            regexContains(field("title"), "Firestore (Enterprise|Standard)")
                .as("isFirestoreRelated"))
        .execute()
        .get();
متابعة
snapshot := client.Pipeline().
	Collection("documents").
	Select(firestore.Fields(
		firestore.RegexContains(firestore.FieldOf("title"), "Firestore (Enterprise|Standard)").As("isFirestoreRelated"),
	)).
	Execute(ctx)

REGEX_FIND

البنية:

regex_find(value: STRING, regexp: STRING | REGEX) -> STRING

الوصف:

تعرض هذه الدالة السلسلة الفرعية الأولى في value التي تطابق regexp، أو NULL في حال عدم العثور على أي تطابق. إذا لم يكن regexp تعبيرًا عاديًا صالحًا، ستعرض هذه الدالة error.

يمكن أن تكون الوسيطة regexp أيضًا قيمة REGEX تم إنشاؤها باستخدام regex("pattern", "options"). يتيح لك هذا التنسيق تقديم خيارات التعبير العادي مع النمط. الخيارات المتاحة هي:

  • ‫i: مطابقة غير حساسة لحالة الأحرف
  • ‫m: وضع الأسطر المتعددة (يتطابق ^ و$ مع بداية الأسطر أو نهايتها).
  • s: وضع Dotall (تطابق . الأسطر الجديدة).

إذا كان regexp عبارة عن STRING، لن يتم تطبيق أي خيارات باستثناء تلك المضمّنة في النمط نفسه (مثل (?i)).

تتّبع التعبيرات العادية بنية مكتبة re2.

أمثلة:

القيمة التعبير العادي regex_find(value, regexp)
"Sometext MATCH" "SomeText" "Sometext"
"Sometext MATCH" regex("match", "i") "MATCH"
"Sometext MATCH" regex("(match)", "i") "MATCH"
"مطابقة نص معيّن" regex("MATCH", "") قيمة فارغة

REGEX_FIND_ALL

البنية:

regex_find_all(value: STRING, regexp: STRING | REGEX) -> ARRAY<STRING>

الوصف:

تعرض هذه الدالة مصفوفة من جميع السلاسل الفرعية في value التي تتطابق مع regexp، أو مصفوفة فارغة في حال عدم العثور على أي تطابقات. إذا لم يكن regexp تعبيرًا عاديًا صالحًا، ستعرض هذه الدالة error.

يمكن أن تكون الوسيطة regexp أيضًا قيمة REGEX تم إنشاؤها باستخدام regex("pattern", "options"). يتيح لك هذا التنسيق تقديم خيارات التعبير العادي مع النمط. الخيارات المتاحة هي:

  • ‫i: مطابقة غير حساسة لحالة الأحرف
  • ‫m: وضع الأسطر المتعددة (يتطابق ^ و$ مع بداية الأسطر أو نهايتها).
  • s: وضع Dotall (تطابق . الأسطر الجديدة).

إذا كان regexp عبارة عن STRING، لن يتم تطبيق أي خيارات باستثناء تلك المضمّنة في النمط نفسه (مثل (?i)).

تتّبع التعبيرات العادية بنية مكتبة re2.

أمثلة:

القيمة التعبير العادي regex_find_all(value, regexp)
"واحد اثنان ثلاثة اثنان" "one" ["one"]
"واحد اثنان ثلاثة اثنان" regex("two", "i") ["TWO", "Two"]
"واحد اثنان ثلاثة اثنان" regex("TWO", "") []

REGEX_MATCH

البنية:

regex_match(value: STRING, regexp: STRING | REGEX) -> BOOLEAN

الوصف:

تعرض هذه الدالة TRUE إذا تطابقت السلسلة value تمامًا مع regexp. إذا لم يكن regexp تعبيرًا عاديًا صالحًا، ستعرض هذه الدالة error.

يمكن أن تكون الوسيطة regexp أيضًا قيمة REGEX تم إنشاؤها باستخدام regex("pattern", "options"). يتيح لك هذا التنسيق تقديم خيارات التعبير العادي مع النمط. الخيارات المتاحة هي:

  • ‫i: مطابقة غير حساسة لحالة الأحرف
  • ‫m: وضع الأسطر المتعددة (يتطابق ^ و$ مع بداية الأسطر أو نهايتها).
  • s: وضع Dotall (تطابق . الأسطر الجديدة).

إذا كان regexp عبارة عن STRING، لن يتم تطبيق أي خيارات باستثناء تلك المضمّنة في النمط نفسه (مثل (?i)).

تتّبع التعبيرات العادية بنية مكتبة re2.

أمثلة:

القيمة التعبير العادي regex_match(value, regexp)
"Firestore" "F.*store" صحيح
"Firestore" "Fire" خطأ
"Firestore" "^F.*e$" صحيح
"FiReStOrE" regex("firestore", "i") صحيح
"Firestore" regex("firestore", "") خطأ
Node.js
const result = await db.pipeline()
  .collection("documents")
  .select(
    field("title").regexMatch("Firestore (Enterprise|Standard)")
      .as("isFirestoreExactly")
  )
  .execute();

Web

const result = await execute(db.pipeline()
  .collection("documents")
  .select(
    field("title").regexMatch("Firestore (Enterprise|Standard)")
      .as("isFirestoreExactly")
  )
);
Swift
let result = try await db.pipeline()
  .collection("documents")
  .select([
    Field("title").regexMatch("Firestore (Enterprise|Standard)")
      .as("isFirestoreExactly")
  ])
  .execute()

Kotlin

val result = db.pipeline()
    .collection("documents")
    .select(
        field("title").regexMatch("Firestore (Enterprise|Standard)")
            .alias("isFirestoreExactly")
    )
    .execute()

Java

Task<Pipeline.Snapshot> result = db.pipeline()
    .collection("documents")
    .select(
        field("title").regexMatch("Firestore (Enterprise|Standard)")
            .alias("isFirestoreExactly")
    )
    .execute();
Python
from google.cloud.firestore_v1.pipeline_expressions import Field

result = (
    client.pipeline()
    .collection("documents")
    .select(
        Field.of("title")
        .regex_match("Firestore (Enterprise|Standard)")
        .as_("isFirestoreExactly")
    )
    .execute()
)
Java
Pipeline.Snapshot result =
    firestore
        .pipeline()
        .collection("documents")
        .select(
            regexMatch(field("title"), "Firestore (Enterprise|Standard)")
                .as("isFirestoreExactly"))
        .execute()
        .get();
متابعة
snapshot := client.Pipeline().
	Collection("documents").
	Select(firestore.Fields(
		firestore.RegexMatch(firestore.FieldOf("title"), "Firestore (Enterprise|Standard)").As("isFirestoreExactly"),
	)).
	Execute(ctx)

STRING_CONCAT

البنية:

string_concat(values: STRING...) -> STRING

الوصف:

تدمج قيمتَي STRING أو أكثر في نتيجة واحدة.

أمثلة:

الوسيطات string_concat(values...)
() خطأ
("a") "a"
("abc", "def") "abcdef"
("a", "", "c") "ac"
Node.js
const result = await db.pipeline()
  .collection("books")
  .select(
    field("title").stringConcat(" by ", field("author"))
      .as("fullyQualifiedTitle")
  )
  .execute();

Web

const result = await execute(db.pipeline()
  .collection("books")
  .select(
    field("title").stringConcat(" by ", field("author"))
      .as("fullyQualifiedTitle")
  )
);
Swift
let result = try await db.pipeline()
  .collection("books")
  .select([
    Field("title").concat([" by ", Field("author")])
      .as("fullyQualifiedTitle")
  ])
  .execute()

Kotlin

val result = db.pipeline()
    .collection("books")
    .select(
        field("title").concat(" by ", field("author"))
            .alias("fullyQualifiedTitle")
    )
    .execute()

Java

Task<Pipeline.Snapshot> result = db.pipeline()
    .collection("books")
    .select(
        field("title").concat(" by ", field("author"))
            .alias("fullyQualifiedTitle")
    )
    .execute();
Python
from google.cloud.firestore_v1.pipeline_expressions import Field

result = (
    client.pipeline()
    .collection("books")
    .select(
        Field.of("title")
        .concat(" by ", Field.of("author"))
        .as_("fullyQualifiedTitle")
    )
    .execute()
)
Java
Pipeline.Snapshot result =
    firestore
        .pipeline()
        .collection("books")
        .select(stringConcat(field("title"), " by ", field("author")).as("fullyQualifiedTitle"))
        .execute()
        .get();
متابعة
snapshot := client.Pipeline().
	Collection("books").
	Select(firestore.Fields(
		firestore.StringConcat(firestore.FieldOf("title"), " by ", firestore.FieldOf("author")).As("fullyQualifiedTitle"),
	)).
	Execute(ctx)

STRING_CONTAINS

البنية:

string_contains(value: STRING, substring: STRING) -> BOOLEAN

الوصف:

تتحقّق هذه الدالة مما إذا كانت السلسلة value تحتوي على السلسلة النصية substring.

أمثلة:

القيمة سلسلة فرعية string_contains(value, substring)
"abc" "b" صحيح
"abc" "d" خطأ
"abc" "" صحيح
"a.c" "." صحيح
"☃☃☃" "☃" صحيح
Node.js
const result = await db.pipeline()
  .collection("articles")
  .select(
    field("body").stringContains("Firestore")
      .as("isFirestoreRelated")
  )
  .execute();

Web

const result = await execute(db.pipeline()
  .collection("articles")
  .select(
    field("body").stringContains("Firestore")
      .as("isFirestoreRelated")
  )
);
Swift
let result = try await db.pipeline()
  .collection("articles")
  .select([
    Field("body").stringContains("Firestore")
      .as("isFirestoreRelated")
  ])
  .execute()

Kotlin

val result = db.pipeline()
    .collection("articles")
    .select(
        field("body").stringContains("Firestore")
            .alias("isFirestoreRelated")
    )
    .execute()

Java

Task<Pipeline.Snapshot> result = db.pipeline()
    .collection("articles")
    .select(
        field("body").stringContains("Firestore")
            .alias("isFirestoreRelated")
    )
    .execute();
Python
from google.cloud.firestore_v1.pipeline_expressions import Field

result = (
    client.pipeline()
    .collection("articles")
    .select(Field.of("body").string_contains("Firestore").as_("isFirestoreRelated"))
    .execute()
)
Java
Pipeline.Snapshot result =
    firestore
        .pipeline()
        .collection("articles")
        .select(stringContains(field("body"), "Firestore").as("isFirestoreRelated"))
        .execute()
        .get();
متابعة
snapshot := client.Pipeline().
	Collection("articles").
	Select(firestore.Fields(
		firestore.StringContains(firestore.FieldOf("body"), "Firestore").As("isFirestoreRelated"),
	)).
	Execute(ctx)

STRING_INDEX_OF

البنية:

string_index_of[T <: STRING | BYTES](value: T, search: T) -> INT64

الوصف:

تعرض هذه الدالة الفهرس الذي يبدأ من 0 لأول تكرار لـ search في value.

  • تعرض هذه الدالة -1 في حال عدم العثور على search.
  • إذا كانت السلسلة value قيمة STRING، يتم قياس النتيجة بقيم مواضع الرموز في ترميز Unicode. إذا كانت القيمة BYTES، يتم قياسها بالبايت.
  • إذا كانت السمة search فارغة STRING أو كانت قيمة BYTES فارغة، تكون النتيجة 0.

أمثلة:

القيمة عملية بحث واحدة string_index_of(value, search)
"مرحبًا بالعالم" "o" 4
"مرحبًا بالعالم" "l" 2
"مرحبًا بالعالم" "z" -1
"موز" "ana" 1
"abc" "" 0
b"abc" b"b" 1
"é" "é" 0
b"é" b"é" 0

TO_UPPER

البنية:

to_upper[T <: STRING | BYTES](value: T) -> T

الوصف:

تحوِّل قيمة STRING أو BYTES إلى أحرف كبيرة.

إذا لم يتوافق بايت أو حرف مع حرف أبجدي صغير في UTF-8، يتم تمريره بدون تغيير.

أمثلة:

القيمة to_upper(value)
"abc" "ABC"
"AbC" "ABC"
b"abc" b"ABC"
b"a1c" b"A1C"
Node.js
const result = await db.pipeline()
  .collection("authors")
  .select(
    field("name").toUpper()
      .as("uppercaseName")
  )
  .execute();

Web

const result = await execute(db.pipeline()
  .collection("authors")
  .select(
    field("name").toUpper()
      .as("uppercaseName")
  )
);
Swift
let result = try await db.pipeline()
  .collection("authors")
  .select([
    Field("name").toUpper()
      .as("uppercaseName")
  ])
  .execute()

Kotlin

val result = db.pipeline()
    .collection("authors")
    .select(
        field("name").toUpper()
            .alias("uppercaseName")
    )
    .execute()

Java

Task<Pipeline.Snapshot> result = db.pipeline()
    .collection("authors")
    .select(
        field("name").toUpper()
            .alias("uppercaseName")
    )
    .execute();
Python
from google.cloud.firestore_v1.pipeline_expressions import Field

result = (
    client.pipeline()
    .collection("authors")
    .select(Field.of("name").to_upper().as_("uppercaseName"))
    .execute()
)
Java
Pipeline.Snapshot result =
    firestore
        .pipeline()
        .collection("authors")
        .select(toUpper(field("name")).as("uppercaseName"))
        .execute()
        .get();
متابعة
snapshot := client.Pipeline().
	Collection("authors").
	Select(firestore.Fields(
		firestore.ToUpper(firestore.FieldOf("name")).As("uppercaseName"),
	)).
	Execute(ctx)

TO_LOWER

البنية:

to_lower[T <: STRING | BYTES](value: T) -> T

الوصف:

تحوّل قيمة STRING أو BYTES إلى أحرف لاتينية صغيرة.

إذا لم يتوافق بايت أو حرف مع حرف أبجدي كبير بترميز UTF-8، يتم تمريره بدون تغيير.

أمثلة:

القيمة to_lower(value)
"ABC" "abc"
"AbC" "abc"
"A1C" "a1c"
b"ABC" b"abc"
Node.js
const result = await db.pipeline()
  .collection("authors")
  .select(
    field("genre").toLower().equal("fantasy")
      .as("isFantasy")
  )
  .execute();

Web

const result = await execute(db.pipeline()
  .collection("authors")
  .select(
    field("genre").toLower().equal("fantasy")
      .as("isFantasy")
  )
);
Swift
let result = try await db.pipeline()
  .collection("authors")
  .select([
    Field("genre").toLower().equal("fantasy")
      .as("isFantasy")
  ])
  .execute()

Kotlin

val result = db.pipeline()
    .collection("authors")
    .select(
        field("genre").toLower().equal("fantasy")
            .alias("isFantasy")
    )
    .execute()

Java

Task<Pipeline.Snapshot> result = db.pipeline()
    .collection("authors")
    .select(
        field("genre").toLower().equal("fantasy")
            .alias("isFantasy")
    )
    .execute();
Python
from google.cloud.firestore_v1.pipeline_expressions import Field

result = (
    client.pipeline()
    .collection("authors")
    .select(Field.of("genre").to_lower().equal("fantasy").as_("isFantasy"))
    .execute()
)
Java
Pipeline.Snapshot result =
    firestore
        .pipeline()
        .collection("authors")
        .select(equal(toLower(field("genre")), "fantasy").as("isFantasy"))
        .execute()
        .get();
متابعة
snapshot := client.Pipeline().
	Collection("authors").
	Select(firestore.Fields(
		firestore.Equal(firestore.ToLower(firestore.FieldOf("genre")), "fantasy").As("isFantasy"),
	)).
	Execute(ctx)

SUBSTRING

البنية:

substring[T <: STRING | BYTES](input: T, position: INT64) -> T
substring[T <: STRING | BYTES](input: T, position: INT64, length: INT64) -> T

الوصف:

تعرض هذه الدالة سلسلة فرعية من input تبدأ عند position (فهرس صفري) وتتضمّن ما يصل إلى length إدخال. في حال عدم تقديم length، يتم عرض السلسلة الفرعية من position إلى نهاية input.

  • إذا كانت قيمة input هي STRING، يتم قياس position وlength بقيم مواضع الرموز في يونيكود. إذا كانت القيمة BYTES، يتم قياسها بالبايت.

  • إذا كانت قيمة position أكبر من طول input، يتم عرض سلسلة فرعية فارغة. إذا كان مجموع position وlength أكبر من طول input، يتم اقتطاع السلسلة الفرعية حتى نهاية input.

  • إذا كانت قيمة position سالبة، يتم أخذ الموضع من نهاية الإدخال. إذا كانت قيمة position السالبة أكبر من حجم الإدخال، يتم ضبط الموضع على صفر. يجب أن تكون قيمة length غير سالبة.

أمثلة:

في حال عدم توفّر السمة length:

إدخال الموضع substring(input, position)
"abc" 0 "abc"
"abc" 1 "bc"
"abc" 3 ""
"abc" -1 "c"
b"abc" 1 b"bc"

عند تقديم السمة length:

إدخال الموضع الطول substring(input, position, length)
"abc" 0 1 "a"
"abc" 1 2 "bc"
"abc" -1 1 "c"
b"abc" 0 1 b"a"
Node.js
const result = await db.pipeline()
  .collection("books")
  .where(field("title").startsWith("The "))
  .select(
    field("title").substring(4)
      .as("titleWithoutLeadingThe")
  )
  .execute();

Web

const result = await execute(db.pipeline()
  .collection("books")
  .where(field("title").startsWith("The "))
  .select(
    field("title").substring(4)
      .as("titleWithoutLeadingThe")
  )
);
Swift
let result = try await db.pipeline()
  .collection("books")
  .where(Field("title").startsWith("The "))
  .select([
    Field("title").substring(position: 4)
      .as("titleWithoutLeadingThe")
  ])
  .execute()

Kotlin

val result = db.pipeline()
    .collection("books")
    .where(field("title").startsWith("The "))
    .select(
        field("title")
          .substring(constant(4),
            field("title").charLength().subtract(4))
            .alias("titleWithoutLeadingThe")
    )
    .execute()

Java

Task<Pipeline.Snapshot> result = db.pipeline()
    .collection("books")
    .where(field("title").startsWith("The "))
    .select(
        field("title").substring(
          constant(4),
            field("title").charLength().subtract(4))
            .alias("titleWithoutLeadingThe")
    )
    .execute();
Python
from google.cloud.firestore_v1.pipeline_expressions import Field

result = (
    client.pipeline()
    .collection("books")
    .where(Field.of("title").starts_with("The "))
    .select(Field.of("title").substring(4).as_("titleWithoutLeadingThe"))
    .execute()
)
Java
Pipeline.Snapshot result =
    firestore
        .pipeline()
        .collection("books")
        .where(startsWith(field("title"), "The "))
        .select(
            substring(field("title"), constant(4), field("title").charLength())
                .as("titleWithoutLeadingThe"))
        .execute()
        .get();
متابعة
snapshot := client.Pipeline().
	Collection("books").
	Where(firestore.StartsWith(firestore.FieldOf("title"), "The ")).
	Select(firestore.Fields(
		firestore.Substring(firestore.FieldOf("title"), firestore.ConstantOf(4), firestore.FieldOf("title").CharLength()).As("titleWithoutLeadingThe"),
	)).
	Execute(ctx)

STRING_REVERSE

البنية:

string_reverse[T <: STRING | BYTES](input: T) -> T

الوصف:

لعرض الإدخال المقدَّم بترتيب عكسي

يتم تحديد الأحرف من خلال قيم مواضع رموز Unicode عندما يكون الإدخال STRING، ومن خلال وحدات البايت عندما يكون الإدخال قيمة BYTES.

أمثلة:

إدخال string_reverse(input)
"abc" "cba"
"a🌹b" "b🌹a"
"مرحبًا" "olleh"
b"abc" b"cba"
Node.js
const result = await db.pipeline()
  .collection("books")
  .select(
    field("name").reverse().as("reversedName")
  )
  .execute();

Web

const result = await execute(db.pipeline()
  .collection("books")
  .select(
    field("name").reverse().as("reversedName")
  )
);
Swift
let result = try await db.pipeline()
  .collection("books")
  .select([
    Field("name").reverse().as("reversedName")
  ])
  .execute()

Kotlin

val result = db.pipeline()
    .collection("books")
    .select(
        field("name").reverse().alias("reversedName")
    )
    .execute()

Java

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

result = (
    client.pipeline()
    .collection("books")
    .select(Field.of("name").string_reverse().as_("reversedName"))
    .execute()
)
Java
Pipeline.Snapshot result =
    firestore
        .pipeline()
        .collection("books")
        .select(reverse(field("name")).as("reversedName"))
        .execute()
        .get();
متابعة
snapshot := client.Pipeline().
	Collection("books").
	Select(firestore.Fields(
		firestore.Reverse(firestore.FieldOf("name")).As("reversedName"),
	)).
	Execute(ctx)

STRING_REPEAT

البنية:

string_repeat[T <: STRING | BYTES](input: T, repetitions: INT64) -> T

الوصف:

تعرض input مكررًا repetitions مرة.

  • يجب أن تكون القيمة "repetitions" عددًا صحيحًا غير سالب.
  • إذا كانت قيمة repetitions هي 0، يتم عرض قيمة فارغة من النوع نفسه مثل input.
  • إذا تجاوزت النتيجة الحد الأقصى المسموح به للحجم (1 ميغابايت)، سيظهر خطأ.

أمثلة:

إدخال مرّات التكرار string_repeat(input, repetitions)
"foo" 3 "foofoofoo"
"foo" 0 ""
"a " 3 "a a a "
b"ab" 2 b"abab"
"é🦆" 2 "é🦆é🦆"

STRING_REPLACE_ALL

البنية:

string_replace_all[T <: STRING | BYTES](input: T, find: T, replacement: T) -> T

الوصف:

يستبدل جميع تكرارات find غير المتداخلة في input بـ replacement.

  • تكون المطابقات حسّاسة لحالة الأحرف.
  • إذا كانت السلسلة find فارغة، لن يتم إجراء أي استبدالات.

أمثلة:

إدخال العثور الاستبدال string_replace_all(input, find, replacement)
"foobarfoo" "foo" "baz" "bazbarbaz"
"ababab" "aba" "c" "cbab"
"foobar" "o" "" "fbar"
"é🦆🌎🦆" "🦆" "a" "éa🌎a"
b"abc" b"b" b"d" b"adc"

STRING_REPLACE_ONE

البنية:

string_replace_one[T <: STRING | BYTES](input: T, find: T, replacement: T) -> T

الوصف:

تستبدل هذه الدالة أول تكرار لـ find في input بـ replacement.

  • تكون المطابقات حسّاسة لحالة الأحرف.
  • إذا كانت السلسلة find فارغة، لن يتم إجراء أي استبدالات.

أمثلة:

إدخال العثور الاستبدال string_replace_one(input, find, replacement)
"foobarfoo" "foo" "baz" "bazbarfoo"
"é" "é" "a" "a"
b"foobar" b"o" b"z" b"fzoobar"

TRIM

البنية:

trim[T <: STRING | BYTES](input: T, values_to_trim: T) -> T
trim[T <: STRING | BYTES](input: T) -> T

الوصف:

تزيل هذه الدالة مجموعة محدّدة من BYTES أو CHARS من بداية ونهاية input المقدَّمة.

  • في حال عدم توفير values_to_trim، يتم اقتطاع أحرف المسافة البيضاء.

أمثلة:

في حال عدم توفّر السمة values_to_trim:

إدخال trim(input)
" foo " "foo"
b" foo " b"foo"
"foo" "foo"
"" ""
" " ""
"\t foo \n" "foo"
b"\t foo \n" b"foo"
"\r\f\v foo \r\f\v" "foo"
b"\r\f\v foo \r\f\v" b"foo"

عند تقديم السمة values_to_trim:

إدخال values_to_trim trim(input, values_to_trim)
"abcbfooaacb" "abc" "foo"
"abcdaabadbac" "abc" "daabad"
b"C1C2C3" b"C1" b"C2C3"
b"C1C2" "foo" خطأ
"foo" b"C1" خطأ

Web

const result = await execute(db.pipeline()
  .collection("books")
  .select(
    field("name").trim().as("whitespaceTrimmedName")
  )
);
Swift
let result = try await db.pipeline()
  .collection("books")
  .select([
    Field("name").trim(" \n\t").as("whitespaceTrimmedName")
  ])
  .execute()

Kotlin

val result = db.pipeline()
    .collection("books")
    .select(
        field("name").trim().alias("whitespaceTrimmedName")
    )
    .execute()

Java

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

result = (
    client.pipeline()
    .collection("books")
    .select(Field.of("name").trim().as_("whitespaceTrimmedName"))
    .execute()
)
Java
Pipeline.Snapshot result =
    firestore
        .pipeline()
        .collection("books")
        .select(trim(field("name")).as("whitespaceTrimmedName"))
        .execute()
        .get();
متابعة
snapshot := client.Pipeline().
	Collection("books").
	Select(firestore.Fields(
		firestore.Trim(firestore.FieldOf("name")).As("whitespaceTrimmedName"),
	)).
	Execute(ctx)

LTRIM

البنية:

ltrim[T <: STRING | BYTES](value: T, to_trim: T) -> T
ltrim[T <: STRING | BYTES](value: T) -> T

الوصف:

تزيل هذه الدالة مجموعة محدّدة من BYTES أو CHARS من بداية value المقدَّمة.

  • في حال عدم توفير to_trim، يتم اقتطاع المسافات البيضاء البادئة.

أمثلة:

في حال عدم توفّر السمة to_trim:

القيمة ltrim(value)
" foo " "foo "
"foo" "foo"

عند تقديم السمة to_trim:

القيمة to_trim ltrim(value, to_trim)
"aaabc" "a" "bc"
"abacaba" "ba" "caba"
"é" "é" ""

RTRIM

البنية:

rtrim[T <: STRING | BYTES](value: T, to_trim: T) -> T
rtrim[T <: STRING | BYTES](value: T) -> T

الوصف:

تزيل هذه الدالة مجموعة محدّدة من BYTES أو CHARS من نهاية value المقدَّمة.

  • في حال عدم توفير to_trim، يتم اقتطاع المسافات البيضاء اللاحقة.

أمثلة:

في حال عدم توفّر السمة to_trim:

القيمة rtrim(value)
" foo " " foo"
"foo" "foo"

عند تقديم السمة to_trim:

القيمة to_trim rtrim(value, to_trim)
"abccc" "c" "ab"
"abacaba" "ba" "abac"
"é" "é" ""

SPLIT

البنية:

split(input: STRING) -> ARRAY<STRING>
split[T <: STRING | BYTES](input: T, delimiter: T) -> ARRAY<T>

الوصف:

تقسّم قيمة STRING أو BYTES باستخدام محدِّد.

  • بالنسبة إلى STRING، المحدِّد التلقائي هو الفاصلة ,. يتم التعامل مع المُحدِّد كسلسلة واحدة.

  • بالنسبة إلى BYTES، يجب تحديد محدِّد.

  • يؤدي التقسيم باستخدام محدّد فارغ إلى إنشاء مصفوفة من نقاط ترميز Unicode لقيم STRING، ومصفوفة من BYTES لقيم BYTES.

  • يؤدي تقسيم STRING فارغ إلى عرض ARRAY مع STRING فارغ واحد.

أمثلة:

في حال عدم توفّر السمة delimiter:

إدخال split(input)
"foo,bar,foo" ["foo", "bar", "foo"]
"foo" ["foo"]
",foo," ["", "foo", ""]
"" [""]
b"C120C2C4" خطأ

عند تقديم السمة delimiter:

إدخال محدِّد split(input, delimiter)
"foo bar foo" " " ["foo", "bar", "foo"]
"foo bar foo" "z" ["foo bar foo"]
"abc" "" ["a", "b", "c"]
b"C1,C2,C4" b"," [b"C1", b"C2", b"C4"]
b"ABC" b"" ‫[b"A", b"B", b"C"]
"foo" b"C1" خطأ