পাটিগণিত ফাংশন

পাটিগণিত ফাংশন

Cloud Firestore সকল গাণিতিক ফাংশনের নিম্নলিখিত আচরণ রয়েছে:

  • ইনপুট প্যারামিটারগুলির মধ্যে কোনটি NULL হলে NULL তে মূল্যায়ন করে।
  • যদি কোনও যুক্তি NaN হয় তবে NaN তে মূল্যায়ন করে।
  • ওভারফ্লো বা আন্ডারফ্লো হলে একটি ত্রুটি তৈরি করে।

অতিরিক্তভাবে, যখন একটি গাণিতিক ফাংশন বিভিন্ন ধরণের একাধিক সংখ্যাসূচক আর্গুমেন্ট গ্রহণ করে (উদাহরণস্বরূপ: add(5.0, 6) ), Cloud Firestore পরোক্ষভাবে আর্গুমেন্টগুলিকে সর্বাধিক প্রশস্ত ইনপুট টাইপে রূপান্তর করে। যদি শুধুমাত্র INT32 ইনপুট প্রদান করা হয়, তাহলে রিটার্ন টাইপ হবে INT64

নাম বিবরণ
ABS একটি number পরম মান প্রদান করে
ADD x + y এর মান ফেরত পাঠায়
SUBTRACT x - y এর মান প্রদান করে
MULTIPLY x * y এর মান প্রদান করে
DIVIDE x / y এর মান ফেরত পাঠায়
MOD x / y এর ভাগের অবশিষ্টাংশ ফেরত পাঠায়
CEIL একটি number সর্বোচ্চ সীমা প্রদান করে
FLOOR একটি number তল ফেরত পাঠায়
ROUND একটি number দশমিক places পূর্ণসংখ্যায় পরিণত করে
POW base^exponent মান প্রদান করে
SQRT একটি number বর্গমূল ফেরত পাঠায়
EXP অয়লারের সংখ্যাকে exponent ঘাতে উন্নীত করে।
LN একটি number স্বাভাবিক লগারিদম প্রদান করে
LOG একটি number লগারিদম ফেরত পাঠায়
LOG10 একটি number লগারিদমকে বেস 10 এ ফেরত পাঠায়
RAND একটি ছদ্ম-র্যান্ডম ফ্লোটিং পয়েন্ট নম্বর প্রদান করে।

এবিএস

বাক্য গঠন:

abs[N <: INT32 | INT64 | FLOAT64](number: N) -> N

বর্ণনা:

একটি number পরম মান প্রদান করে।

  • যখন ফাংশনটি INT32 বা INT64 মান ওভারফ্লো করে তখন একটি ত্রুটি নিক্ষেপ করে।

উদাহরণ:

সংখ্যা abs(number)
১০ ১০
-১০ ১০
১০ লিটার ১০ লিটার
-০.০ ০.০
১০.৫ ১০.৫
-১০.৫ ১০.৫
-২ ৩১ [error]
-২ ৬৩ [error]

যোগ করুন

বাক্য গঠন:

add[N <: INT32 | INT64 | FLOAT64](x: N, y: N) -> N

বর্ণনা:

x + y এর মান প্রদান করে।

উদাহরণ:

এক্স y add(x, y)
২০ ২৩
১০.০ ১১.০
২২.৫ ২.০ ২৪.৫
INT64.MAX সম্পর্কে [error]
INT64.MIN সম্পর্কে -১ [error]
নোড.জেএস
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"))
);
সুইফট
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();
    
পাইথন
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();

বিয়োগ

বাক্য গঠন:

subtract[N <: INT32 | INT64 | FLOAT64](x: N, y: N) -> N

বর্ণনা:

x - y এর মান প্রদান করে।

উদাহরণ:

এক্স y subtract(x, y)
২০ ১৭
১০.০ ৯.০
২২.৫ ২.০ ২০.৫
INT64.MAX সম্পর্কে -১ [error]
INT64.MIN সম্পর্কে [error]
নোড.জেএস
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"))
);
সুইফট
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();
    
পাইথন
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();

গুণ করুন

বাক্য গঠন:

multiply[N <: INT32 | INT64 | FLOAT64](x: N, y: N) -> N

বর্ণনা:

x * y এর মান প্রদান করে।

উদাহরণ:

এক্স y multiply(x, y)
২০ ৬০
১০.০ ১০.০
২২.৫ ২.০ ৪৫.০
INT64.MAX সম্পর্কে [error]
INT64.MIN সম্পর্কে [error]
FLOAT64.MAX সম্পর্কে FLOAT64.MAX সম্পর্কে +inf
নোড.জেএস
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"))
);
সুইফট
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();
    
পাইথন
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();

ভাগ করো

বাক্য গঠন:

divide[N <: INT32 | INT64 | FLOAT64](x: N, y: N) -> N

বর্ণনা:

x / y এর মান প্রদান করে। পূর্ণসংখ্যা ভাগ ছোট করা হয়।

উদাহরণ:

এক্স y divide(x, y)
২০
১০.০ ৩,৩৩৩...
২২.৫ ১১.২৫
১০ 0 [error]
১.০ ০.০ +inf
-১.০ ০.০ -inf
নোড.জেএস
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"))
);
সুইফট
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();
    
পাইথন
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();

মোড

বাক্য গঠন:

mod[N <: INT32 | INT64 | FLOAT64](x: N, y: N) -> N

বর্ণনা:

x / y এর অবশিষ্টাংশ প্রদান করে।

  • পূর্ণসংখ্যার ধরণ ( INT64 ) এর জন্য y শূন্য হলে একটি error নিক্ষেপ করে।
  • ফ্লোট টাইপের জন্য y শূন্য হলে NaN প্রদান করে ( FLOAT64 )।

উদাহরণ:

এক্স y mod(x, y)
২০
-১০ -১
১০ -৩
-১০ -৩ -১
১০ 0
২২.৫ ০.৫
২২.৫ ০.০ NaN
২৫ 0 [error]
নোড.জেএস
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"))
);
সুইফট
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();
    
পাইথন
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();

সিইআইএল

বাক্য গঠন:

ceil[N <: INT32 | INT64 | FLOAT64](number: N) -> N

বর্ণনা:

number চেয়ে কম নয় এমন ক্ষুদ্রতম পূর্ণসংখ্যার মান প্রদান করে।

উদাহরণ:

সংখ্যা ceil(number)
২০ ২০
১০ ১০
0 0
২৪ লিটার ২৪ লিটার
-০.৪ -০.০
০.৪ ১.০
২২.৫ ২৩.০
+inf +inf
-inf -inf
নোড.জেএস
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")
  )
);
সুইফট
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();
    
পাইথন
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();

মেঝে

বাক্য গঠন:

floor[N <: INT32 | INT64 | FLOAT64](number: N) -> N

বর্ণনা:

number চেয়ে বড় নয় এমন বৃহত্তম পূর্ণসংখ্যার মান প্রদান করে।

উদাহরণ:

সংখ্যা floor(number)
২০ ২০
১০ ১০
0 0
২১৪৭৪৮৩৬৪৮ ২১৪৭৪৮৩৬৪৮
-০.৪ -১.০
০.৪ ০.০
২২.৫ ২২.০
+inf +inf
-inf -inf
নোড.জেএস
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")
  )
);
সুইফট
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();
    
পাইথন
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();

রাউন্ড

বাক্য গঠন:

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 ১৬.০
-১৫.৫ 0 -১৬.০
১৫ ১৫
১৫ 0 ১৫
১৫ -১ ২০
১৫ -২ 0
১৫.৪৮৯২৪ ১৫.৫
৩১ -১ -১ [error]
৬৩ -১ লিটার -১ [error]
নোড.জেএস
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"))
  );
সুইফট
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();
    
পাইথন
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();

যুদ্ধবন্দি

বাক্য গঠন:

pow(base: FLOAT64, exponent: FLOAT64) -> FLOAT64

বর্ণনা:

exponent ঘাতে উত্থাপিত মান base প্রদান করে।

  • যদি base <= 0 এবং exponent ঋণাত্মক হয়, তাহলে একটি ত্রুটি নিক্ষেপ করে।

  • যেকোনো exponent জন্য, pow(1, exponent) হল 1।

  • যেকোনো base জন্য, pow(base, 0) হল 1।

উদাহরণ:

ভিত্তি সূচক pow(base, exponent)
৮.০
-৩ ০.১২৫
+inf 0 ১.০
+inf ১.০
-১ ০.৫ [error]
0 -১ [error]
নোড.জেএস
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")
  )
);
সুইফট
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();
    
পাইথন
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();

SQRT সম্পর্কে

বাক্য গঠন:

sqrt[N <: FLOAT64 | DECIMAL128](number: N) -> N

বর্ণনা:

একটি number বর্গমূল প্রদান করে।

  • number ঋণাত্মক হলে একটি error ছুড়ে দেয়।

উদাহরণ:

সংখ্যা sqrt(number)
২৫ ৫.০
১২.০০২ ৩,৪৬৪...
০.০ ০.০
NaN NaN
+inf +inf
-inf [error]
x < 0 [error]
নোড.জেএস
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")
  )
);
সুইফট
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();
    
পাইথন
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();

এক্সপি

বাক্য গঠন:

exp(exponent: FLOAT64) -> FLOAT64

বর্ণনা:

অয়লারের সংখ্যার মান exponent ঘাতে উন্নীত করে, যাকে প্রাকৃতিক সূচকীয় ফাংশনও বলা হয়।

উদাহরণ:

সূচক exp(exponent)
০.০ ১.০
১০ e^10 ( FLOAT64 )
+inf +inf
-inf 0
নোড.জেএস
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"))
);
সুইফট
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();
    
পাইথন
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();

এলএন

বাক্য গঠন:

ln(number: FLOAT64) -> FLOAT64

বর্ণনা:

number স্বাভাবিক লগারিদম প্রদান করে। এই ফাংশনটি log(number) এর সমতুল্য।

উদাহরণ:

সংখ্যা ln(number)
০.০
২ লিটার ০.৬৯৩...
১.০ ০.০
e ( FLOAT64 ) ১.০
-inf NaN
+inf +inf
x <= 0 [error]
নোড.জেএস
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"))
);
সুইফট
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();
    
পাইথন
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();

লগ

বাক্য গঠন:

log(number: FLOAT64, base: FLOAT64) -> FLOAT64
log(number: FLOAT64) -> FLOAT64

বর্ণনা:

একটি number লগারিদমকে base ফেরত পাঠায়।

  • যদি শুধুমাত্র number প্রদান করা হয়, তাহলে number লগারিদমকে base ফেরত পাঠায় ( ln(number) এর সমার্থক)।

উদাহরণ:

সংখ্যা ভিত্তি log(number, base)
১০০ ১০ ২.০
-inf Numeric NaN
Numeric +inf NaN
number <= 0 Numeric [error]
Numeric base <= 0 [error]
Numeric ১.০ [error]

লগ১০

বাক্য গঠন:

log10(x: FLOAT64) -> FLOAT64

বর্ণনা:

একটি number লগারিদমকে বেস 10 এ ফেরত পাঠায়।

উদাহরণ:

সংখ্যা log10(number)
১০০ ২.০
-inf NaN
+inf +inf
x <= 0 [error]

র‍্যান্ড

বাক্য গঠন:

rand() -> FLOAT64

বর্ণনা:

0.0 (সমেত) এবং 1.0 (এক্সক্লুসিভ) এর মধ্যে সমানভাবে নির্বাচিত একটি ছদ্ম-র্যান্ডম ফ্লোটিং পয়েন্ট নম্বর প্রদান করুন।