دوال السلاسل
| الاسم | الوصف |
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" | خطأ |