Hàm so sánh

Hàm so sánh

Tên Mô tả
EQUAL So sánh bằng
GREATER_THAN So sánh lớn hơn
GREATER_THAN_OR_EQUAL Phép so sánh lớn hơn hoặc bằng
LESS_THAN Nhỏ hơn so với
LESS_THAN_OR_EQUAL Phép so sánh nhỏ hơn hoặc bằng
NOT_EQUAL Phép so sánh không bằng
CMP So sánh chung

EQUAL

Cú pháp:

equal(x: ANY, y: ANY) -> BOOLEAN

Ví dụ:

x y equal(x, y)
1 l 1 l TRUE
1.0 1 l TRUE
-1 1 l FALSE
NaN (Không phải số) NaN (Không phải số) TRUE
NULL NULL TRUE
NULL ABSENT FALSE

Nội dung mô tả:

Trả về TRUE nếu x và y bằng nhau, nếu không thì trả về FALSE.

Node.js
const result = await db.pipeline()
  .collection("books")
  .select(field("rating").equal(5).as("hasPerfectRating"))
  .execute();

Web

const result = await execute(db.pipeline()
  .collection("books")
  .select(field("rating").equal(5).as("hasPerfectRating"))
);
Swift
let result = try await db.pipeline()
  .collection("books")
  .select([Field("rating").equal(5).as("hasPerfectRating")])
  .execute()

Kotlin

val result = db.pipeline()
    .collection("books")
    .select(field("rating").equal(5).alias("hasPerfectRating"))
    .execute()

Java

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

result = (
    client.pipeline()
    .collection("books")
    .select(Field.of("rating").equal(5).as_("hasPerfectRating"))
    .execute()
)
Java
Pipeline.Snapshot result =
    firestore
        .pipeline()
        .collection("books")
        .select(equal(field("rating"), 5).as("hasPerfectRating"))
        .execute()
        .get();
Bắt đầu
snapshot := client.Pipeline().
	Collection("books").
	Select(firestore.Fields(
		firestore.Equal(firestore.FieldOf("rating"), 5).As("hasPerfectRating"),
	)).
	Execute(ctx)

GREATER_THAN

Cú pháp:

greater_than(x: ANY, y: ANY) -> BOOLEAN

Nội dung mô tả:

Trả về TRUE nếu x lớn hơn y, nếu không thì trả về FALSE.

Nếu không thể so sánh x và y, hàm sẽ trả về FALSE.

Ví dụ:

x y greater_than(x, y)
1 l 0,0 TRUE
1 l 1 l FALSE
1 l 2L FALSE
"foo" 0L FALSE
0L "foo" FALSE
NaN (Không phải số) 0L FALSE
0L NaN (Không phải số) FALSE
NULL NULL FALSE
Node.js
const result = await db.pipeline()
  .collection("books")
  .select(field("rating").greaterThan(4).as("hasHighRating"))
  .execute();

Web

const result = await execute(db.pipeline()
  .collection("books")
  .select(field("rating").greaterThan(4).as("hasHighRating"))
);
Swift
let result = try await db.pipeline()
  .collection("books")
  .select([Field("rating").greaterThan(4).as("hasHighRating")])
  .execute()

Kotlin

val result = db.pipeline()
    .collection("books")
    .select(field("rating").greaterThan(4).alias("hasHighRating"))
    .execute()

Java

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

result = (
    client.pipeline()
    .collection("books")
    .select(Field.of("rating").greater_than(4).as_("hasHighRating"))
    .execute()
)
Java
Pipeline.Snapshot result =
    firestore
        .pipeline()
        .collection("books")
        .select(greaterThan(field("rating"), 4).as("hasHighRating"))
        .execute()
        .get();
Bắt đầu
snapshot := client.Pipeline().
	Collection("books").
	Select(firestore.Fields(
		firestore.GreaterThan(firestore.FieldOf("rating"), 4).As("hasHighRating"),
	)).
	Execute(ctx)

GREATER_THAN_OR_EQUAL

Cú pháp:

greater_than_or_equal(x: ANY, y: ANY) -> BOOLEAN

Nội dung mô tả:

Trả về TRUE nếu x lớn hơn hoặc bằng y, nếu không thì trả về FALSE.

Nếu không thể so sánh x và y, hàm sẽ trả về FALSE.

Ví dụ:

x y greater_than_or_equal(x, y)
1 l 0,0 TRUE
1 l 1 l TRUE
1 l 2L FALSE
"foo" 0L FALSE
0L "foo" FALSE
NaN (Không phải số) 0L FALSE
0L NaN (Không phải số) FALSE
NULL NULL TRUE
Node.js
const result = await db.pipeline()
  .collection("books")
  .select(field("published").greaterThanOrEqual(1900).as("publishedIn20thCentury"))
  .execute();

Web

const result = await execute(db.pipeline()
  .collection("books")
  .select(field("published").greaterThanOrEqual(1900).as("publishedIn20thCentury"))
);
Swift
let result = try await db.pipeline()
  .collection("books")
  .select([Field("published").greaterThanOrEqual(1900).as("publishedIn20thCentury")])
  .execute()

Kotlin

val result = db.pipeline()
    .collection("books")
    .select(field("published").greaterThanOrEqual(1900).alias("publishedIn20thCentury"))
    .execute()

Java

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

result = (
    client.pipeline()
    .collection("books")
    .select(
        Field.of("published")
        .greater_than_or_equal(1900)
        .as_("publishedIn20thCentury")
    )
    .execute()
)
Java
Pipeline.Snapshot result =
    firestore
        .pipeline()
        .collection("books")
        .select(greaterThanOrEqual(field("published"), 1900).as("publishedIn20thCentury"))
        .execute()
        .get();
Bắt đầu
snapshot := client.Pipeline().
	Collection("books").
	Select(firestore.Fields(
		firestore.GreaterThanOrEqual(firestore.FieldOf("published"), 1900).As("publishedIn20thCentury"),
	)).
	Execute(ctx)

LESS_THAN

Cú pháp:

less_than(x: ANY, y: ANY) -> BOOLEAN

Nội dung mô tả:

Trả về TRUE nếu x nhỏ hơn y, nếu không thì trả về FALSE.

Nếu không thể so sánh x và y, hàm sẽ trả về FALSE.

Ví dụ:

x y less_than(x, y)
1 l 0,0 FALSE
1 l 1 l FALSE
1 l 2L TRUE
"foo" 0L FALSE
0L "foo" FALSE
NaN (Không phải số) 0L FALSE
0L NaN (Không phải số) FALSE
NULL NULL FALSE
Node.js
const result = await db.pipeline()
  .collection("books")
  .select(field("published").lessThan(1923).as("isPublicDomainProbably"))
  .execute();

Web

const result = await execute(db.pipeline()
  .collection("books")
  .select(field("published").lessThan(1923).as("isPublicDomainProbably"))
);
Swift
let result = try await db.pipeline()
  .collection("books")
  .select([Field("published").lessThan(1923).as("isPublicDomainProbably")])
  .execute()

Kotlin

val result = db.pipeline()
    .collection("books")
    .select(field("published").lessThan(1923).alias("isPublicDomainProbably"))
    .execute()

Java

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

result = (
    client.pipeline()
    .collection("books")
    .select(Field.of("published").less_than(1923).as_("isPublicDomainProbably"))
    .execute()
)
Java
Pipeline.Snapshot result =
    firestore
        .pipeline()
        .collection("books")
        .select(lessThan(field("published"), 1923).as("isPublicDomainProbably"))
        .execute()
        .get();
Bắt đầu
snapshot := client.Pipeline().
	Collection("books").
	Select(firestore.Fields(
		firestore.LessThan(firestore.FieldOf("published"), 1923).As("isPublicDomainProbably"),
	)).
	Execute(ctx)

LESS_THAN_OR_EQUAL

Cú pháp:

less_than_or_equal(x: ANY, y: ANY) -> BOOLEAN

Nội dung mô tả:

Trả về TRUE nếu x nhỏ hơn hoặc bằng y, nếu không thì trả về FALSE.

Nếu không thể so sánh x và y, hàm sẽ trả về FALSE.

Ví dụ:

x y less_than(x, y)
1 l 0,0 FALSE
1 l 1 l TRUE
1 l 2L TRUE
"foo" 0L FALSE
0L "foo" FALSE
NaN (Không phải số) 0L FALSE
0L NaN (Không phải số) FALSE
NULL NULL TRUE
Node.js
const result = await db.pipeline()
  .collection("books")
  .select(field("rating").lessThanOrEqual(2).as("hasBadRating"))
  .execute();

Web

const result = await execute(db.pipeline()
  .collection("books")
  .select(field("rating").lessThanOrEqual(2).as("hasBadRating"))
);
Swift
let result = try await db.pipeline()
  .collection("books")
  .select([Field("rating").lessThanOrEqual(2).as("hasBadRating")])
  .execute()

Kotlin

val result = db.pipeline()
    .collection("books")
    .select(field("rating").lessThanOrEqual(2).alias("hasBadRating"))
    .execute()

Java

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

result = (
    client.pipeline()
    .collection("books")
    .select(Field.of("rating").less_than_or_equal(2).as_("hasBadRating"))
    .execute()
)
Java
Pipeline.Snapshot result =
    firestore
        .pipeline()
        .collection("books")
        .select(lessThanOrEqual(field("rating"), 2).as("hasBadRating"))
        .execute()
        .get();
Bắt đầu
snapshot := client.Pipeline().
	Collection("books").
	Select(firestore.Fields(
		firestore.LessThanOrEqual(firestore.FieldOf("rating"), 2).As("hasBadRating"),
	)).
	Execute(ctx)

NOT_EQUAL

Cú pháp:

not_equal(x: ANY, y: ANY) -> BOOLEAN

Nội dung mô tả:

Trả về TRUE nếu x không bằng y, nếu không thì trả về FALSE.

Ví dụ:

x y not_equal(x, y)
1 l 1 l FALSE
1.0 1 l FALSE
-1 1 l TRUE
NaN (Không phải số) 0L TRUE
NaN (Không phải số) NaN (Không phải số) FALSE
NULL NULL FALSE
NULL ABSENT TRUE
Node.js
const result = await db.pipeline()
  .collection("books")
  .select(field("title").notEqual("1984").as("not1984"))
  .execute();

Web

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

Kotlin

val result = db.pipeline()
    .collection("books")
    .select(field("title").notEqual("1984").alias("not1984"))
    .execute()

Java

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

result = (
    client.pipeline()
    .collection("books")
    .select(Field.of("title").not_equal("1984").as_("not1984"))
    .execute()
)
Java
Pipeline.Snapshot result =
    firestore
        .pipeline()
        .collection("books")
        .select(notEqual(field("title"), "1984").as("not1984"))
        .execute()
        .get();
Bắt đầu
snapshot := client.Pipeline().
	Collection("books").
	Select(firestore.Fields(
		firestore.NotEqual(firestore.FieldOf("title"), "1984").As("not1984"),
	)).
	Execute(ctx)

LHT

Cú pháp:

cmp(x: ANY, y: ANY) -> Int64

Nội dung mô tả:

So sánh x và y, trả về:

  • 1L nếu x lớn hơn y.
  • -1L nếu x nhỏ hơn y.
  • Nếu không thì là 0L.

Không giống như các hàm so sánh khác, hàm cmp(...) hoạt động trên nhiều loại, theo cùng thứ tự được sử dụng trong giai đoạn sort(...). Hãy xem phần thứ tự loại giá trị để biết cách sắp xếp giá trị theo loại.

Ví dụ:

x y cmp(x, y)
1 l 1 l 0L
1.0 1 l 0L
-1 1 l -1L
42,5D "foo" -1L
NULL NULL 0L
NULL ABSENT 0L