পাটিগণিত ফাংশন
Cloud Firestore-এর সব পাটিগণিত ফাংশনের নিম্নলিখিত আচরণ আছে:
- ইনপুট প্যারামিটারের মধ্যে কোনও একটি
NULLহলে,NULLহিসেবে মূল্যায়ন করে। - যেকোনও আর্গুমেন্ট
NaNহলে,NaNহিসেবে মূল্যায়ন করে। - ওভারফ্লো বা আন্ডারফ্লো হলে একটি ত্রুটি তৈরি করে।
Cloud Firestore নিম্নলিখিত ক্রম অনুযায়ী নিউমেরিক টাইপ ওয়াইডেনিং পারফর্ম করে: INT32 < INT64 < FLOAT64 < DECIMAL128. যখন কোনও অ্যারিথমেটিক
ফাংশন বিভিন্ন ধরনের একাধিক সংখ্যাসূচক আর্গুমেন্ট নেয় (যেমন,
add(5.0D, 6L)), তখন সংকীর্ণ প্রকারগুলি অন্তর্নিহিতভাবে অপারেন্ডের মধ্যে উপস্থিত
সবচেয়ে প্রশস্ত প্রকারে রূপান্তরিত হয়। আগের উদাহরণে, 6L-কে 6.0D-এ
পরিবর্তন করা হয়েছে, যার ফলে এক্সপ্রেশনটি FLOAT64 টাইপ রিটার্ন করে।
INT64 -> FLOAT64 থেকে একটি অন্তর্নিহিত জবরদস্তি নির্ভুলতার ক্ষতি করতে পারে
কারণ জবরদস্তিমূলক মান তার সবচেয়ে কম উল্লেখযোগ্য বিট হারাতে পারে। ফলাফল হিসেবে পাওয়া ভ্যালু
IEEE 754 রাউন্ড-টু-নিয়ারেস্ট মোড ব্যবহার করে আসল পূর্ণ সংখ্যার ভ্যালুর রাউন্ড করা ভার্সন
হবে।
| নাম | বিবরণ |
ABS
|
number-এর পরম মান দেখায়
|
ADD
|
x + y-এর মান রিটার্ন করে
|
SUBTRACT
|
x - y-এর মান রিটার্ন করে
|
MULTIPLY
|
x * y-এর মান রিটার্ন করে
|
DIVIDE
|
x / y-এর মান রিটার্ন করে
|
MOD
|
x / y-এর ভাগের ভাগশেষ দেখায়
|
CEIL
|
number-এর সিলিং দেখায়
|
FLOOR
|
number-এর ফ্লোর রিটার্ন করে
|
ROUND
|
number-কে places দশমিক স্থান পর্যন্ত রাউন্ড করে
|
TRUNC
|
number-কে places দশমিক স্থান পর্যন্ত ট্রাঙ্কেট করে
|
POW
|
base^exponent-এর মান রিটার্ন করে
|
SQRT
|
number-এর বর্গমূল দেখায়
|
EXP
|
exponent-এর সূচক হিসেবে অয়লারের সংখ্যা দেখায়
|
LN
|
number-এর ন্যাচারাল লগারিদম দেখায়
|
LOG
|
number-এর লগারিদম দেখায়
|
LOG10
|
10 বেসের সাপেক্ষে number-এর লগারিদম দেখায়
|
RAND
|
সিউডো-র্যান্ডম ফ্লোটিং পয়েন্ট নম্বর দেখায় |
ABS
সিনট্যাক্স:
abs[N <: INT32 | INT64 | FLOAT64 | DECIMAL128](number: N) -> N
বিবরণ:
number-এর পরম মান দেখায়।
- ফাংশনটি
INT32বাINT64মান ওভারফ্লো করলে একটি ত্রুটি দেখায়।
উদাহরণ:
| নম্বর | abs(number) |
|---|---|
| 10 | 10 |
| -10 | 10 |
| ১০ লাখ | ১০ লাখ |
| -০.০ | 0.0 |
| ১০.৫ | ১০.৫ |
| -১০.৫ | ১০.৫ |
| -২৩১ | [error] |
| -২৬৩ | [error] |
যোগ করুন
সিনট্যাক্স:
add[N <: INT32 | INT64 | FLOAT64 | DECIMAL128](x: N, y: N) -> N
বিবরণ:
x + y-এর ভ্যালু দেখায়।
উদাহরণ:
| x | y | add(x, y) |
|---|---|---|
| 20 | 3 | 23 |
| ১০.০ | 1 | ১১.০ |
| 22.5 | 2.0 | ২৪.৫ |
| INT64.MAX | 1 | [error] |
| INT64.MIN | -১ | [error] |
Node.js
const result = await db.pipeline() .collection("books") .select(field("soldBooks").add(field("unsoldBooks")).as("totalBooks")) .execute();
Web
const result = await execute(db.pipeline() .collection("books") .select(field("soldBooks").add(field("unsoldBooks")).as("totalBooks")) );
Swift
let result = try await db.pipeline() .collection("books") .select([Field("soldBooks").add(Field("unsoldBooks")).as("totalBooks")]) .execute()
Kotlin
val result = db.pipeline() .collection("books") .select(Expression.add(field("soldBooks"), field("unsoldBooks")).alias("totalBooks")) .execute()
Java
Task<Pipeline.Snapshot> result = db.pipeline() .collection("books") .select(Expression.add(field("soldBooks"), field("unsoldBooks")).alias("totalBooks")) .execute();
Python
from google.cloud.firestore_v1.pipeline_expressions import Field result = ( client.pipeline() .collection("books") .select(Field.of("soldBooks").add(Field.of("unsoldBooks")).as_("totalBooks")) .execute() )
জাভা
Pipeline.Snapshot result = firestore .pipeline() .collection("books") .select(add(field("soldBooks"), field("unsoldBooks")).as("totalBooks")) .execute() .get();
Go
snapshot := client.Pipeline(). Collection("books"). Select(firestore.Fields( firestore.Add(firestore.FieldOf("soldBooks"), firestore.FieldOf("unsoldBooks")).As("totalBooks"), )). Execute(ctx)
বিয়োগ করুন
সিনট্যাক্স:
subtract[N <: INT32 | INT64 | FLOAT64 | DECIMAL128](x: N, y: N) -> N
বিবরণ:
x - y-এর ভ্যালু দেখায়।
উদাহরণ:
| x | y | subtract(x, y) |
|---|---|---|
| 20 | 3 | 17 |
| ১০.০ | 1 | ৯.০ |
| 22.5 | 2.0 | 20.5 |
| INT64.MAX | -১ | [error] |
| INT64.MIN | 1 | [error] |
Node.js
const storeCredit = 7; const result = await db.pipeline() .collection("books") .select(field("price").subtract(constant(storeCredit)).as("totalCost")) .execute();
Web
const storeCredit = 7; const result = await execute(db.pipeline() .collection("books") .select(field("price").subtract(constant(storeCredit)).as("totalCost")) );
Swift
let storeCredit = 7 let result = try await db.pipeline() .collection("books") .select([Field("price").subtract(Constant(storeCredit)).as("totalCost")]) .execute()
Kotlin
val storeCredit = 7 val result = db.pipeline() .collection("books") .select(Expression.subtract(field("price"), storeCredit).alias("totalCost")) .execute()
Java
int storeCredit = 7; Task<Pipeline.Snapshot> result = db.pipeline() .collection("books") .select(Expression.subtract(field("price"), storeCredit).alias("totalCost")) .execute();
Python
from google.cloud.firestore_v1.pipeline_expressions import Field store_credit = 7 result = ( client.pipeline() .collection("books") .select(Field.of("price").subtract(store_credit).as_("totalCost")) .execute() )
জাভা
int storeCredit = 7; Pipeline.Snapshot result = firestore .pipeline() .collection("books") .select(subtract(field("price"), storeCredit).as("totalCost")) .execute() .get();
Go
storeCredit := 7 snapshot := client.Pipeline(). Collection("books"). Select(firestore.Fields( firestore.Subtract(firestore.FieldOf("price"), storeCredit).As("totalCost"), )). Execute(ctx)
MULTIPLY
সিনট্যাক্স:
multiply[N <: INT32 | INT64 | FLOAT64 | DECIMAL128](x: N, y: N) -> N
বিবরণ:
x * y-এর ভ্যালু দেখায়।
উদাহরণ:
| x | y | multiply(x, y) |
|---|---|---|
| 20 | 3 | 60 |
| ১০.০ | 1 | ১০.০ |
| 22.5 | 2.0 | ৪৫.০ |
| INT64.MAX | 2 | [error] |
| INT64.MIN | 2 | [error] |
| FLOAT64.MAX | FLOAT64.MAX | +inf |
Node.js
const result = await db.pipeline() .collection("books") .select(field("price").multiply(field("soldBooks")).as("revenue")) .execute();
Web
const result = await execute(db.pipeline() .collection("books") .select(field("price").multiply(field("soldBooks")).as("revenue")) );
Swift
let result = try await db.pipeline() .collection("books") .select([Field("price").multiply(Field("soldBooks")).as("revenue")]) .execute()
Kotlin
val result = db.pipeline() .collection("books") .select(Expression.multiply(field("price"), field("soldBooks")).alias("revenue")) .execute()
Java
Task<Pipeline.Snapshot> result = db.pipeline() .collection("books") .select(Expression.multiply(field("price"), field("soldBooks")).alias("revenue")) .execute();
Python
from google.cloud.firestore_v1.pipeline_expressions import Field result = ( client.pipeline() .collection("books") .select(Field.of("price").multiply(Field.of("soldBooks")).as_("revenue")) .execute() )
জাভা
Pipeline.Snapshot result = firestore .pipeline() .collection("books") .select(multiply(field("price"), field("soldBooks")).as("revenue")) .execute() .get();
Go
snapshot := client.Pipeline(). Collection("books"). Select(firestore.Fields( firestore.Multiply(firestore.FieldOf("price"), firestore.FieldOf("soldBooks")).As("revenue"), )). Execute(ctx)
ভাগ
সিনট্যাক্স:
divide[N <: INT32 | INT64 | FLOAT64 | DECIMAL128](x: N, y: N) -> N
বিবরণ:
x / y-এর ভ্যালু দেখায়। পূর্ণসংখ্যা বিভাজন ট্রাঙ্কেট করা হয়েছে।
উদাহরণ:
| x | y | divide(x, y) |
|---|---|---|
| 20 | 3 | 6 |
| ১০.০ | 3 | 3.333... |
| 22.5 | 2 | ১১.২৫ |
| 10 | 0 | [error] |
| 1.0 | 0.0 | +inf |
| -১.০ | 0.0 | -inf |
| 0.0 | 0.0 | NaN |
+inf |
+inf |
NaN |
Node.js
const result = await db.pipeline() .collection("books") .select(field("ratings").divide(field("soldBooks")).as("reviewRate")) .execute();
Web
const result = await execute(db.pipeline() .collection("books") .select(field("ratings").divide(field("soldBooks")).as("reviewRate")) );
Swift
let result = try await db.pipeline() .collection("books") .select([Field("ratings").divide(Field("soldBooks")).as("reviewRate")]) .execute()
Kotlin
val result = db.pipeline() .collection("books") .select(Expression.divide(field("ratings"), field("soldBooks")).alias("reviewRate")) .execute()
Java
Task<Pipeline.Snapshot> result = db.pipeline() .collection("books") .select(Expression.divide(field("ratings"), field("soldBooks")).alias("reviewRate")) .execute();
Python
from google.cloud.firestore_v1.pipeline_expressions import Field result = ( client.pipeline() .collection("books") .select(Field.of("ratings").divide(Field.of("soldBooks")).as_("reviewRate")) .execute() )
জাভা
Pipeline.Snapshot result = firestore .pipeline() .collection("books") .select(divide(field("ratings"), field("soldBooks")).as("reviewRate")) .execute() .get();
Go
snapshot := client.Pipeline(). Collection("books"). Select(firestore.Fields( firestore.Divide(firestore.FieldOf("ratings"), firestore.FieldOf("soldBooks")).As("reviewRate"), )). Execute(ctx)
MOD
সিনট্যাক্স:
mod[N <: INT32 | INT64 | FLOAT64 | DECIMAL128](x: N, y: N) -> N
বিবরণ:
x / y-এর ভাগশেষ দেখায়।
y-এর মান পূর্ণ সংখ্যার (INT64) জন্য শূন্য হলেerrorদেখায়।- ফ্লোট টাইপের (
FLOAT64) জন্যyশূন্য হলেNaNরিটার্ন করে।
উদাহরণ:
| x | y | mod(x, y) |
|---|---|---|
| 20 | 3 | 2 |
| -10 | 3 | -১ |
| 10 | -৩ | 1 |
| -10 | -৩ | -১ |
| 10 | 1 | 0 |
| 22.5 | 2 | ০.৫ |
| 22.5 | 0.0 | NaN |
| 25 | 0 | [error] |
Node.js
const displayCapacity = 1000; const result = await db.pipeline() .collection("books") .select(field("unsoldBooks").mod(constant(displayCapacity)).as("warehousedBooks")) .execute();
Web
const displayCapacity = 1000; const result = await execute(db.pipeline() .collection("books") .select(field("unsoldBooks").mod(constant(displayCapacity)).as("warehousedBooks")) );
Swift
let displayCapacity = 1000 let result = try await db.pipeline() .collection("books") .select([Field("unsoldBooks").mod(Constant(displayCapacity)).as("warehousedBooks")]) .execute()
Kotlin
val displayCapacity = 1000 val result = db.pipeline() .collection("books") .select(Expression.mod(field("unsoldBooks"), displayCapacity).alias("warehousedBooks")) .execute()
Java
int displayCapacity = 1000; Task<Pipeline.Snapshot> result = db.pipeline() .collection("books") .select(Expression.mod(field("unsoldBooks"), displayCapacity).alias("warehousedBooks")) .execute();
Python
from google.cloud.firestore_v1.pipeline_expressions import Field display_capacity = 1000 result = ( client.pipeline() .collection("books") .select(Field.of("unsoldBooks").mod(display_capacity).as_("warehousedBooks")) .execute() )
জাভা
int displayCapacity = 1000; Pipeline.Snapshot result = firestore .pipeline() .collection("books") .select(mod(field("unsoldBooks"), displayCapacity).as("warehousedBooks")) .execute() .get();
Go
displayCapacity := 1000 snapshot := client.Pipeline(). Collection("books"). Select(firestore.Fields( firestore.Mod(firestore.FieldOf("unsoldBooks"), displayCapacity).As("warehousedBooks"), )). Execute(ctx)
CEIL
সিনট্যাক্স:
ceil[N <: INT32 | INT64 | FLOAT64 | DECIMAL128](number: N) -> N
বিবরণ:
number-এর থেকে কম নয় এমন ক্ষুদ্রতম পূর্ণসংখ্যা দেখায়।
উদাহরণ:
| নম্বর | ceil(number) |
|---|---|
| 20 | 20 |
| 10 | 10 |
| 0 | 0 |
| 24L | 24L |
| -0.4 | -০.০ |
| ০.৪ | 1.0 |
| 22.5 | ২৩.০ |
NaN |
NaN |
+inf |
+inf |
-inf |
-inf |
Node.js
const booksPerShelf = 100; const result = await db.pipeline() .collection("books") .select( field("unsoldBooks").divide(constant(booksPerShelf)).ceil().as("requiredShelves") ) .execute();
Web
const booksPerShelf = 100; const result = await execute(db.pipeline() .collection("books") .select( field("unsoldBooks").divide(constant(booksPerShelf)).ceil().as("requiredShelves") ) );
Swift
let booksPerShelf = 100 let result = try await db.pipeline() .collection("books") .select([ Field("unsoldBooks").divide(Constant(booksPerShelf)).ceil().as("requiredShelves") ]) .execute()
Kotlin
val booksPerShelf = 100 val result = db.pipeline() .collection("books") .select( Expression.divide(field("unsoldBooks"), booksPerShelf).ceil().alias("requiredShelves") ) .execute()
Java
int booksPerShelf = 100; Task<Pipeline.Snapshot> result = db.pipeline() .collection("books") .select( Expression.divide(field("unsoldBooks"), booksPerShelf).ceil().alias("requiredShelves") ) .execute();
Python
from google.cloud.firestore_v1.pipeline_expressions import Field books_per_shelf = 100 result = ( client.pipeline() .collection("books") .select( Field.of("unsoldBooks") .divide(books_per_shelf) .ceil() .as_("requiredShelves") ) .execute() )
জাভা
int booksPerShelf = 100; Pipeline.Snapshot result = firestore .pipeline() .collection("books") .select(ceil(divide(field("unsoldBooks"), booksPerShelf)).as("requiredShelves")) .execute() .get();
Go
booksPerShelf := 100 snapshot := client.Pipeline(). Collection("books"). Select(firestore.Fields( firestore.Ceil(firestore.Divide(firestore.FieldOf("unsoldBooks"), booksPerShelf)).As("requiredShelves"), )). Execute(ctx)
FLOOR
সিনট্যাক্স:
floor[N <: INT32 | INT64 | FLOAT64 | DECIMAL128](number: N) -> N
বিবরণ:
number-এর থেকে বড় নয় এমন সবচেয়ে বড় পূর্ণসংখ্যার মান দেখায়।
উদাহরণ:
| নম্বর | floor(number) |
|---|---|
| 20 | 20 |
| 10 | 10 |
| 0 | 0 |
| 2147483648 | 2147483648 |
| -0.4 | -১.০ |
| ০.৪ | 0.0 |
| 22.5 | ২২.০ |
NaN |
NaN |
+inf |
+inf |
-inf |
-inf |
Node.js
const result = await db.pipeline() .collection("books") .addFields( field("wordCount").divide(field("pages")).floor().as("wordsPerPage") ) .execute();
Web
const result = await execute(db.pipeline() .collection("books") .addFields( field("wordCount").divide(field("pages")).floor().as("wordsPerPage") ) );
Swift
let result = try await db.pipeline() .collection("books") .addFields([ Field("wordCount").divide(Field("pages")).floor().as("wordsPerPage") ]) .execute()
Kotlin
val result = db.pipeline() .collection("books") .addFields( Expression.divide(field("wordCount"), field("pages")).floor().alias("wordsPerPage") ) .execute()
Java
Task<Pipeline.Snapshot> result = db.pipeline() .collection("books") .addFields( Expression.divide(field("wordCount"), field("pages")).floor().alias("wordsPerPage") ) .execute();
Python
from google.cloud.firestore_v1.pipeline_expressions import Field result = ( client.pipeline() .collection("books") .add_fields( Field.of("wordCount").divide(Field.of("pages")).floor().as_("wordsPerPage") ) .execute() )
জাভা
Pipeline.Snapshot result = firestore .pipeline() .collection("books") .addFields(floor(divide(field("wordCount"), field("pages"))).as("wordsPerPage")) .execute() .get();
Go
snapshot := client.Pipeline(). Collection("books"). AddFields(firestore.Selectables( firestore.Floor(firestore.Divide(firestore.FieldOf("wordCount"), firestore.FieldOf("pages"))).As("wordsPerPage"), )). Execute(ctx)
ROUND
সিনট্যাক্স:
round[N <: INT32 | INT64 | FLOAT64 | DECIMAL128](number: N) -> N
round[N <: INT32 | INT64 | FLOAT64 | DECIMAL128](number: N, places: INT64) -> N
বিবরণ:
number-এর places সংখ্যা রাউন্ড অফ করে। places পজিটিভ হলে, দশমিক বিন্দুর ডানদিকের সংখ্যাকে এবং নেগেটিভ হলে, দশমিক বিন্দুর বাঁদিকের সংখ্যাকে রাউন্ড করে।
- শুধু
numberদেওয়া হলে, সবচেয়ে কাছের পূর্ণ সংখ্যায় রাউন্ড করা হয়। - হাফওয়ে কেসের ক্ষেত্রে শূন্য থেকে দূরে রাউন্ড করে।
- নেগেটিভ
placesভ্যালু দিয়ে রাউন্ড করার ফলে ওভারফ্লো হলে,errorথ্রো করা হয়।
উদাহরণ:
| নম্বর | স্থানসমূহ | round(number, places) |
|---|---|---|
| ১৫.৫ | 0 | ১৬.০ |
| -15.5 | 0 | -১৬.০ |
| 15 | 1 | 15 |
| 15 | 0 | 15 |
| 15 | -১ | 20 |
| 15 | -২ | 0 |
| 15.48924 | 1 | ১৫.৫ |
| ২৩১-১ | -১ | [error] |
| ২৬৩-১L | -১ | [error] |
Node.js
const result = await db.pipeline() .collection("books") .select(field("soldBooks").multiply(field("price")).round().as("partialRevenue")) .aggregate(field("partialRevenue").sum().as("totalRevenue")) .execute();
Web
const result = await execute(db.pipeline() .collection("books") .select(field("soldBooks").multiply(field("price")).round().as("partialRevenue")) .aggregate(field("partialRevenue").sum().as("totalRevenue")) );
Swift
let result = try await db.pipeline() .collection("books") .select([Field("soldBooks").multiply(Field("price")).round().as("partialRevenue")]) .aggregate([Field("partialRevenue").sum().as("totalRevenue")]) .execute()
Kotlin
val result = db.pipeline() .collection("books") .select(Expression.multiply(field("soldBooks"), field("price")).round().alias("partialRevenue")) .aggregate(AggregateFunction.sum("partialRevenue").alias("totalRevenue")) .execute()
Java
Task<Pipeline.Snapshot> result = db.pipeline() .collection("books") .select(Expression.multiply(field("soldBooks"), field("price")).round().alias("partialRevenue")) .aggregate(AggregateFunction.sum("partialRevenue").alias("totalRevenue")) .execute();
Python
from google.cloud.firestore_v1.pipeline_expressions import Field result = ( client.pipeline() .collection("books") .select( Field.of("soldBooks") .multiply(Field.of("price")) .round() .as_("partialRevenue") ) .aggregate(Field.of("partialRevenue").sum().as_("totalRevenue")) .execute() )
জাভা
Pipeline.Snapshot result = firestore .pipeline() .collection("books") .select(round(multiply(field("soldBooks"), field("price"))).as("partialRevenue")) .aggregate(sum("partialRevenue").as("totalRevenue")) .execute() .get();
Go
snapshot := client.Pipeline(). Collection("books"). Select(firestore.Fields( firestore.Round(firestore.Multiply(firestore.FieldOf("soldBooks"), firestore.FieldOf("price"))).As("partialRevenue"), )). Aggregate(firestore.Accumulators( firestore.Sum("partialRevenue").As("totalRevenue"), )). Execute(ctx)
TRUNC
সিনট্যাক্স:
trunc[N <: Number](number: N) -> N
trunc[N <: Number](number: N, places: INT64) -> N
বিবরণ:
number-কে নির্দিষ্ট সংখ্যক places দশমিক স্থানে ট্রাঙ্কেট করে। places পজিটিভ হলে দশমিক বিন্দুর ডানদিকে এবং নেগেটিভ হলে দশমিক বিন্দুর বাঁদিকে
সংখ্যা ট্রাঙ্কেট করে।
- শুধুমাত্র
numberপ্রদান করা হলে, শূন্যের কাছাকাছি পূর্ণ সংখ্যায় ট্রাঙ্কেট করা হয়। - ট্রাঙ্কেট করার ফলে ওভারফ্লো হলে
errorথ্রো করা হয়।
উদাহরণ:
| নম্বর | স্থানসমূহ | trunc(number, places) |
|---|---|---|
| ১৫.৫ | 0 | 15.0 |
| -15.5 | 0 | -১৫.০ |
| 15 | 1 | 15 |
| 15 | 0 | 15 |
| 15 | -১ | 10 |
| 15 | -২ | 0 |
| 15.48924 | 1 | 15.4 |
| -15.48924 | 2 | -১৫.৪৮ |
POW
সিনট্যাক্স:
pow(base: FLOAT64, exponent: FLOAT64) -> FLOAT64
বিবরণ:
base ভ্যালুর exponent ঘাত দেখায়।
base <= 0এবংexponentনেগেটিভ হলে সমস্যা দেখায়।যেকোনও
exponent-এর (NaNসহ) জন্য,pow(1, exponent)হল ১।যেকোনও
base-এর (NaNসহ) জন্য,pow(base, 0)হল ১।
উদাহরণ:
| বেস | ঘাত | pow(base, exponent) |
|---|---|---|
| 2 | 3 | ৮.০ |
| 2 | -৩ | ০.১২৫ |
+inf |
0 | 1.0 |
| 1 | +inf |
1.0 |
NaN |
0 | 1.0 |
| 1 | NaN |
1.0 |
NaN |
Numeric |
NaN |
Numeric |
NaN |
NaN |
| -১ | ০.৫ | [error] |
| 0 | -১ | [error] |
Node.js
const googleplex = { latitude: 37.4221, longitude: 122.0853 }; const result = await db.pipeline() .collection("cities") .addFields( field("lat").subtract(constant(googleplex.latitude)) .multiply(111 /* km per degree */) .pow(2) .as("latitudeDifference"), field("lng").subtract(constant(googleplex.longitude)) .multiply(111 /* km per degree */) .pow(2) .as("longitudeDifference") ) .select( field("latitudeDifference").add(field("longitudeDifference")).sqrt() // Inaccurate for large distances or close to poles .as("approximateDistanceToGoogle") ) .execute();
Web
const googleplex = { latitude: 37.4221, longitude: 122.0853 }; const result = await execute(db.pipeline() .collection("cities") .addFields( field("lat").subtract(constant(googleplex.latitude)) .multiply(111 /* km per degree */) .pow(2) .as("latitudeDifference"), field("lng").subtract(constant(googleplex.longitude)) .multiply(111 /* km per degree */) .pow(2) .as("longitudeDifference") ) .select( field("latitudeDifference").add(field("longitudeDifference")).sqrt() // Inaccurate for large distances or close to poles .as("approximateDistanceToGoogle") ) );
Swift
let googleplex = CLLocation(latitude: 37.4221, longitude: 122.0853) let result = try await db.pipeline() .collection("cities") .addFields([ Field("lat").subtract(Constant(googleplex.coordinate.latitude)) .multiply(111 /* km per degree */) .pow(2) .as("latitudeDifference"), Field("lng").subtract(Constant(googleplex.coordinate.latitude)) .multiply(111 /* km per degree */) .pow(2) .as("longitudeDifference") ]) .select([ Field("latitudeDifference").add(Field("longitudeDifference")).sqrt() // Inaccurate for large distances or close to poles .as("approximateDistanceToGoogle") ]) .execute()
Kotlin
val googleplex = GeoPoint(37.4221, -122.0853) val result = db.pipeline() .collection("cities") .addFields( field("lat").subtract(googleplex.latitude) .multiply(111) // km per degree .pow(2) .alias("latitudeDifference"), field("lng").subtract(googleplex.longitude) .multiply(111) // km per degree .pow(2) .alias("longitudeDifference") ) .select( field("latitudeDifference").add(field("longitudeDifference")).sqrt() // Inaccurate for large distances or close to poles .alias("approximateDistanceToGoogle") ) .execute()
Java
GeoPoint googleplex = new GeoPoint(37.4221, -122.0853); Task<Pipeline.Snapshot> result = db.pipeline() .collection("cities") .addFields( field("lat").subtract(googleplex.getLatitude()) .multiply(111 /* km per degree */) .pow(2) .alias("latitudeDifference"), field("lng").subtract(googleplex.getLongitude()) .multiply(111 /* km per degree */) .pow(2) .alias("longitudeDifference") ) .select( field("latitudeDifference").add(field("longitudeDifference")).sqrt() // Inaccurate for large distances or close to poles .alias("approximateDistanceToGoogle") ) .execute();
Python
from google.cloud.firestore_v1.pipeline_expressions import Field googleplexLat = 37.4221 googleplexLng = -122.0853 result = ( client.pipeline() .collection("cities") .add_fields( Field.of("lat") .subtract(googleplexLat) .multiply(111) # km per degree .pow(2) .as_("latitudeDifference"), Field.of("lng") .subtract(googleplexLng) .multiply(111) # km per degree .pow(2) .as_("longitudeDifference"), ) .select( Field.of("latitudeDifference") .add(Field.of("longitudeDifference")) .sqrt() # Inaccurate for large distances or close to poles .as_("approximateDistanceToGoogle") ) .execute() )
জাভা
double googleplexLat = 37.4221; double googleplexLng = -122.0853; Pipeline.Snapshot result = firestore .pipeline() .collection("cities") .addFields( pow(multiply(subtract(field("lat"), googleplexLat), 111), 2) .as("latitudeDifference"), pow(multiply(subtract(field("lng"), googleplexLng), 111), 2) .as("longitudeDifference")) .select( sqrt(add(field("latitudeDifference"), field("longitudeDifference"))) // Inaccurate for large distances or close to poles .as("approximateDistanceToGoogle")) .execute() .get();
Go
googleplexLat := 37.4221 googleplexLng := -122.0853 snapshot := client.Pipeline(). Collection("cities"). AddFields(firestore.Selectables( firestore.Pow(firestore.Multiply(firestore.Subtract(firestore.FieldOf("lat"), googleplexLat), 111), 2).As("latitudeDifference"), firestore.Pow(firestore.Multiply(firestore.Subtract(firestore.FieldOf("lng"), googleplexLng), 111), 2).As("longitudeDifference"), )). Select(firestore.Fields( firestore.Sqrt(firestore.Add(firestore.FieldOf("latitudeDifference"), firestore.FieldOf("longitudeDifference"))). // Inaccurate for large distances or close to poles As("approximateDistanceToGoogle"), )). Execute(ctx)
SQRT
সিনট্যাক্স:
sqrt[N <: FLOAT64 | DECIMAL128](number: N) -> N
বিবরণ:
number-এর বর্গমূল দেখায়।
numberনেতিবাচক হলেerrorদেখায়।
উদাহরণ:
| নম্বর | sqrt(number) |
|---|---|
| 25 | ৫.০ |
| ১২.০০২ | 3.464... |
| 0.0 | 0.0 |
NaN |
NaN |
+inf |
+inf |
-inf |
[error] |
x < 0 |
[error] |
Node.js
const googleplex = { latitude: 37.4221, longitude: 122.0853 }; const result = await db.pipeline() .collection("cities") .addFields( field("lat").subtract(constant(googleplex.latitude)) .multiply(111 /* km per degree */) .pow(2) .as("latitudeDifference"), field("lng").subtract(constant(googleplex.longitude)) .multiply(111 /* km per degree */) .pow(2) .as("longitudeDifference") ) .select( field("latitudeDifference").add(field("longitudeDifference")).sqrt() // Inaccurate for large distances or close to poles .as("approximateDistanceToGoogle") ) .execute();
Web
const googleplex = { latitude: 37.4221, longitude: 122.0853 }; const result = await execute(db.pipeline() .collection("cities") .addFields( field("lat").subtract(constant(googleplex.latitude)) .multiply(111 /* km per degree */) .pow(2) .as("latitudeDifference"), field("lng").subtract(constant(googleplex.longitude)) .multiply(111 /* km per degree */) .pow(2) .as("longitudeDifference") ) .select( field("latitudeDifference").add(field("longitudeDifference")).sqrt() // Inaccurate for large distances or close to poles .as("approximateDistanceToGoogle") ) );
Swift
let googleplex = CLLocation(latitude: 37.4221, longitude: 122.0853) let result = try await db.pipeline() .collection("cities") .addFields([ Field("lat").subtract(Constant(googleplex.coordinate.latitude)) .multiply(111 /* km per degree */) .pow(2) .as("latitudeDifference"), Field("lng").subtract(Constant(googleplex.coordinate.latitude)) .multiply(111 /* km per degree */) .pow(2) .as("longitudeDifference") ]) .select([ Field("latitudeDifference").add(Field("longitudeDifference")).sqrt() // Inaccurate for large distances or close to poles .as("approximateDistanceToGoogle") ]) .execute()
Kotlin
val googleplex = GeoPoint(37.4221, -122.0853) val result = db.pipeline() .collection("cities") .addFields( field("lat").subtract(googleplex.latitude) .multiply(111) // km per degree .pow(2) .alias("latitudeDifference"), field("lng").subtract(googleplex.longitude) .multiply(111) // km per degree .pow(2) .alias("longitudeDifference") ) .select( field("latitudeDifference").add(field("longitudeDifference")).sqrt() // Inaccurate for large distances or close to poles .alias("approximateDistanceToGoogle") ) .execute()
Java
GeoPoint googleplex = new GeoPoint(37.4221, -122.0853); Task<Pipeline.Snapshot> result = db.pipeline() .collection("cities") .addFields( field("lat").subtract(googleplex.getLatitude()) .multiply(111 /* km per degree */) .pow(2) .alias("latitudeDifference"), field("lng").subtract(googleplex.getLongitude()) .multiply(111 /* km per degree */) .pow(2) .alias("longitudeDifference") ) .select( field("latitudeDifference").add(field("longitudeDifference")).sqrt() // Inaccurate for large distances or close to poles .alias("approximateDistanceToGoogle") ) .execute();
Python
from google.cloud.firestore_v1.pipeline_expressions import Field googleplexLat = 37.4221 googleplexLng = -122.0853 result = ( client.pipeline() .collection("cities") .add_fields( Field.of("lat") .subtract(googleplexLat) .multiply(111) # km per degree .pow(2) .as_("latitudeDifference"), Field.of("lng") .subtract(googleplexLng) .multiply(111) # km per degree .pow(2) .as_("longitudeDifference"), ) .select( Field.of("latitudeDifference") .add(Field.of("longitudeDifference")) .sqrt() # Inaccurate for large distances or close to poles .as_("approximateDistanceToGoogle") ) .execute() )
জাভা
double googleplexLat = 37.4221; double googleplexLng = -122.0853; Pipeline.Snapshot result = firestore .pipeline() .collection("cities") .addFields( pow(multiply(subtract(field("lat"), googleplexLat), 111), 2) .as("latitudeDifference"), pow(multiply(subtract(field("lng"), googleplexLng), 111), 2) .as("longitudeDifference")) .select( sqrt(add(field("latitudeDifference"), field("longitudeDifference"))) // Inaccurate for large distances or close to poles .as("approximateDistanceToGoogle")) .execute() .get();
Go
googleplexLat := 37.4221 googleplexLng := -122.0853 snapshot := client.Pipeline(). Collection("cities"). AddFields(firestore.Selectables( firestore.Pow(firestore.Multiply(firestore.Subtract(firestore.FieldOf("lat"), googleplexLat), 111), 2).As("latitudeDifference"), firestore.Pow(firestore.Multiply(firestore.Subtract(firestore.FieldOf("lng"), googleplexLng), 111), 2).As("longitudeDifference"), )). Select(firestore.Fields( firestore.Sqrt(firestore.Add(firestore.FieldOf("latitudeDifference"), firestore.FieldOf("longitudeDifference"))). // Inaccurate for large distances or close to poles As("approximateDistanceToGoogle"), )). Execute(ctx)
EXP
সিনট্যাক্স:
exp(exponent: FLOAT64) -> FLOAT64
বিবরণ:
exponent-এর পাওয়ারে উন্নীত অয়লারের সংখ্যার মান দেখায়, একে
ন্যাচারাল এক্সপোনেনশিয়াল ফাংশনও বলা হয়।
উদাহরণ:
| ঘাত | exp(exponent) |
|---|---|
| 0.0 | 1.0 |
| 10 | e^10 (FLOAT64) |
NaN |
NaN |
+inf |
+inf |
-inf |
0 |
Node.js
const result = await db.pipeline() .collection("books") .select(field("rating").exp().as("expRating")) .execute();
Web
const result = await execute(db.pipeline() .collection("books") .select(field("rating").exp().as("expRating")) );
Swift
let result = try await db.pipeline() .collection("books") .select([Field("rating").exp().as("expRating")]) .execute()
Kotlin
val result = db.pipeline() .collection("books") .select(field("rating").exp().alias("expRating")) .execute()
Java
Task<Pipeline.Snapshot> result = db.pipeline() .collection("books") .select(field("rating").exp().alias("expRating")) .execute();
Python
from google.cloud.firestore_v1.pipeline_expressions import Field result = ( client.pipeline() .collection("books") .select(Field.of("rating").exp().as_("expRating")) .execute() )
জাভা
Pipeline.Snapshot result = firestore .pipeline() .collection("books") .select(exp(field("rating")).as("expRating")) .execute() .get();
Go
snapshot := client.Pipeline(). Collection("books"). Select(firestore.Fields( firestore.Exp(firestore.FieldOf("rating")).As("expRating"), )). Execute(ctx)
LN
সিনট্যাক্স:
ln(number: FLOAT64) -> FLOAT64
বিবরণ:
number-এর স্বাভাবিক লগারিদম দেখায়। এই ফাংশনটি
log(number)-এর সমতুল্য।
উদাহরণ:
| নম্বর | ln(number) |
|---|---|
| 1 | 0.0 |
| 2L | 0.693... |
| 1.0 | 0.0 |
e (FLOAT64) |
1.0 |
NaN |
NaN |
-inf |
NaN |
+inf |
+inf |
x <= 0 |
[error] |
Node.js
const result = await db.pipeline() .collection("books") .select(field("rating").ln().as("lnRating")) .execute();
Web
const result = await execute(db.pipeline() .collection("books") .select(field("rating").ln().as("lnRating")) );
Swift
let result = try await db.pipeline() .collection("books") .select([Field("rating").ln().as("lnRating")]) .execute()
Kotlin
val result = db.pipeline() .collection("books") .select(field("rating").ln().alias("lnRating")) .execute()
Java
Task<Pipeline.Snapshot> result = db.pipeline() .collection("books") .select(field("rating").ln().alias("lnRating")) .execute();
Python
from google.cloud.firestore_v1.pipeline_expressions import Field result = ( client.pipeline() .collection("books") .select(Field.of("rating").ln().as_("lnRating")) .execute() )
জাভা
Pipeline.Snapshot result = firestore .pipeline() .collection("books") .select(ln(field("rating")).as("lnRating")) .execute() .get();
Go
snapshot := client.Pipeline(). Collection("books"). Select(firestore.Fields( firestore.Ln(firestore.FieldOf("rating")).As("lnRating"), )). Execute(ctx)
লগ
সিনট্যাক্স:
log(number: FLOAT64, base: FLOAT64) -> FLOAT64
log(number: FLOAT64) -> FLOAT64
বিবরণ:
base-এর number-এর লগারিদম দেখায়।
- শুধুমাত্র
numberপ্রদান করা হলে,number-এর লগারিদমbase-এ ফেরত দেয় (ln(number)-এর সমার্থক)।
উদাহরণ:
| নম্বর | বেস | log(number, base) |
|---|---|---|
| ১০০ | 10 | 2.0 |
NaN |
Numeric |
NaN |
Numeric |
NaN |
NaN |
-inf |
Numeric |
NaN |
Numeric। |
+inf |
NaN |
number <= 0 |
Numeric |
[error] |
Numeric |
base <= 0 |
[error] |
Numeric |
1.0 | [error] |
LOG10
সিনট্যাক্স:
log10(x: FLOAT64) -> FLOAT64
বিবরণ:
10 বেসের সাপেক্ষে number-এর লগারিদম দেখায়।
উদাহরণ:
| নম্বর | log10(number) |
|---|---|
| ১০০ | 2.0 |
NaN |
NaN |
-inf |
NaN |
+inf |
+inf |
x <= 0 |
[error] |
র্যান্ড
সিনট্যাক্স:
rand() -> FLOAT64
বিবরণ:
0.0 (অন্তর্ভুক্ত) এবং 1.0 (বাদ দিয়ে)-এর মধ্যে থেকে অভিন্নভাবে বেছে নেওয়া একটি সিউডো-র্যান্ডম ফ্লোটিং পয়েন্ট নম্বর রিটার্ন করে।