StructuredQuery

یک پرسش Firestore

مراحل پرس و جو به ترتیب زیر اجرا می شوند: 1. از 2. جایی که 3. انتخاب کنید 4. orderBy + startAt + endAt 5. offset 6. limit

نمایندگی JSON
{
  "select": {
    object (Projection)
  },
  "from": [
    {
      object (CollectionSelector)
    }
  ],
  "where": {
    object (Filter)
  },
  "orderBy": [
    {
      object (Order)
    }
  ],
  "startAt": {
    object (Cursor)
  },
  "endAt": {
    object (Cursor)
  },
  "offset": integer,
  "limit": integer,
  "findNearest": {
    object (FindNearest)
  }
}
زمینه های
select

object ( Projection )

زیر مجموعه اختیاری از فیلدها برای بازگشت.

این به عنوان یک DocumentMask روی اسناد بازگردانده شده از یک پرس و جو عمل می کند. وقتی تنظیم نمی شود، فرض می کنیم که تماس گیرنده می خواهد همه فیلدها برگردانده شوند.

from[]

object ( CollectionSelector )

مجموعه هایی برای پرس و جو

where

object ( Filter )

فیلتری که باید اعمال شود.

orderBy[]

object ( Order )

ترتیب اعمال به نتایج پرس و جو.

Firestore به تماس‌گیرندگان اجازه می‌دهد تا سفارش کامل، سفارش جزئی یا اصلاً سفارشی را نداشته باشند. در همه موارد، Firestor یک سفارش پایدار را از طریق قوانین زیر تضمین می کند:

  • orderBy برای ارجاع به تمام فیلدهای استفاده شده با فیلتر نابرابری مورد نیاز است.
  • تمام فیلدهایی که باید به orderBy باشند اما قبلاً وجود ندارند به ترتیب واژگانی نام فیلد اضافه می شوند.
  • اگر سفارشی در __name__ مشخص نشده باشد، به طور پیش‌فرض اضافه می‌شود.

فیلدها با همان جهت مرتب‌سازی آخرین مرتبه مشخص شده، یا اگر ترتیبی مشخص نشده باشد، "صعودی" اضافه می‌شوند. مثلا:

  • ORDER BY a تبدیل به ORDER BY a ASC, __name__ ASC می شود
  • ORDER BY a DESC به ORDER BY a DESC, __name__ DESC
  • WHERE a > 1 تبدیل می شود WHERE a > 1 ORDER BY a ASC, __name__ ASC
  • WHERE __name__ > ... AND a > 1 می شود WHERE __name__ > ... AND a > 1 ORDER BY a ASC, __name__ ASC
startAt

object ( Cursor )

پیشوند بالقوه یک موقعیت در نتیجه مجموعه برای شروع پرس و جو در.

ترتیب مجموعه نتایج بر اساس بند ORDER BY درخواست اصلی است.

SELECT * FROM k WHERE a = 1 AND b > 2 ORDER BY b ASC, __name__ ASC;

نتایج این پرس و جو بر اساس (b ASC, __name__ ASC) مرتب شده اند.

مکان‌نماها می‌توانند به ترتیب کامل یا پیشوند مکان اشاره کنند، اگرچه نمی‌توانند به فیلدهای بیشتری از آنچه در ORDER BY ارائه شده ارجاع دهند.

با ادامه مثال بالا، پیوست کردن نشانگرهای شروع زیر تأثیر متفاوتی خواهد داشت:

  • START BEFORE (2, /k/123) : پرس و جو را درست قبل از a = 1 AND b > 2 AND __name__ > /k/123 شروع کنید.
  • START AFTER (10) : پرس و جو را درست بعد از a = 1 AND b > 10 شروع کنید.

برخلاف OFFSET که برای رد شدن به اسکن بر روی اولین N نتیجه نیاز دارد، مکان نما شروع به درخواست اجازه می دهد تا از یک موقعیت منطقی شروع شود. این موقعیت برای مطابقت با یک نتیجه واقعی لازم نیست، از این موقعیت به جلو اسکن می شود تا سند بعدی را پیدا کند.

نیاز دارد:

  • تعداد مقادیر نمی تواند بیشتر از تعداد فیلدهای مشخص شده در عبارت ORDER BY باشد.
endAt

object ( Cursor )

پیشوند بالقوه یک موقعیت در نتیجه مجموعه ای برای پایان دادن به پرس و جو در.

این شبیه به START_AT است اما به جای موقعیت شروع، موقعیت پایان را کنترل می کند.

نیاز دارد:

  • تعداد مقادیر نمی تواند بیشتر از تعداد فیلدهای مشخص شده در عبارت ORDER BY باشد.
offset

integer

تعداد اسنادی که باید قبل از بازگرداندن اولین نتیجه حذف شوند.

این پس از محدودیت های مشخص شده توسط WHERE ، START AT و END AT اما قبل از بند LIMIT اعمال می شود.

نیاز دارد:

  • در صورت مشخص شدن مقدار باید بزرگتر یا مساوی صفر باشد.
limit

integer

حداکثر تعداد نتایج برای بازگشت.

بعد از تمام محدودیت های دیگر اعمال می شود.

نیاز دارد:

  • در صورت مشخص شدن مقدار باید بزرگتر یا مساوی صفر باشد.
findNearest

object ( FindNearest )

اختیاری. جستجوی بالقوه نزدیکترین همسایگان

بعد از تمام فیلترهای دیگر و سفارش اعمال می شود.

نزدیکترین جاسازی های برداری را به بردار پرس و جو داده شده پیدا می کند.

فرافکنی

پیش بینی فیلدهای سند برای بازگشت.

نمایندگی JSON
{
  "fields": [
    {
      object (FieldReference)
    }
  ]
}
زمینه های
fields[]

object ( FieldReference )

زمینه هایی برای بازگشت.

اگر خالی باشد، همه فیلدها برگردانده می شوند. فقط برای برگرداندن نام سند، از ['__name__'] استفاده کنید.

انتخابگر مجموعه

مجموعه ای از مجموعه، مانند messages as m1 .

نمایندگی JSON
{
  "collectionId": string,
  "allDescendants": boolean
}
زمینه های
collectionId

string

شناسه مجموعه پس از تنظیم، فقط مجموعه‌هایی را با این شناسه انتخاب می‌کند.

allDescendants

boolean

وقتی نادرست است، فقط مجموعه‌هایی را انتخاب می‌کند که فرزندان مستقیم parent مشخص‌شده در RunQueryRequest هستند. وقتی درست است، همه مجموعه‌های نسل را انتخاب می‌کند.

فیلتر کنید

یک فیلتر

نمایندگی JSON
{

  // Union field filter_type can be only one of the following:
  "compositeFilter": {
    object (CompositeFilter)
  },
  "fieldFilter": {
    object (FieldFilter)
  },
  "unaryFilter": {
    object (UnaryFilter)
  }
  // End of list of possible types for union field filter_type.
}
زمینه های
filter_type فیلد اتحادیه. نوع فیلتر. filter_type تنها می تواند یکی از موارد زیر باشد:
compositeFilter

object ( CompositeFilter )

یک فیلتر کامپوزیت

fieldFilter

object ( FieldFilter )

فیلتر در فیلد سند

unaryFilter

object ( UnaryFilter )

فیلتری که دقیقاً یک آرگومان می گیرد.

کامپوزیت فیلتر

فیلتری که چندین فیلتر دیگر را با استفاده از عملگر داده شده ادغام می کند.

نمایندگی JSON
{
  "op": enum (Operator),
  "filters": [
    {
      object (Filter)
    }
  ]
}
زمینه های
op

enum ( Operator )

عملگر برای ترکیب چند فیلتر.

filters[]

object ( Filter )

لیست فیلترهایی که باید ترکیب شوند.

نیاز دارد:

  • حداقل یک فیلتر وجود دارد.

اپراتور

یک اپراتور فیلتر ترکیبی

Enums
OPERATOR_UNSPECIFIED نامشخص این مقدار نباید استفاده شود.
AND برای برآورده کردن تمام فیلترهای ترکیبی، مدارک مورد نیاز است.
OR مدارک لازم است تا حداقل یکی از فیلترهای ترکیبی را برآورده کند.

فیلد فیلتر

فیلتر در یک زمینه خاص.

نمایندگی JSON
{
  "field": {
    object (FieldReference)
  },
  "op": enum (Operator),
  "value": {
    object (Value)
  }
}
زمینه های
field

object ( FieldReference )

فیلدی برای فیلتر کردن.

op

enum ( Operator )

اپراتور برای فیلتر کردن.

value

object ( Value )

ارزشی که باید با آن مقایسه کرد.

اپراتور

یک اپراتور فیلتر میدانی

Enums
OPERATOR_UNSPECIFIED نامشخص این مقدار نباید استفاده شود.
LESS_THAN

field داده شده کمتر از value داده شده است.

نیاز دارد:

  • این field در orderBy اول قرار دارد.
LESS_THAN_OR_EQUAL

field داده شده کمتر یا مساوی با value داده شده است.

نیاز دارد:

  • این field در orderBy اول قرار دارد.
GREATER_THAN

field داده شده بزرگتر از value داده شده است.

نیاز دارد:

  • این field در orderBy اول قرار دارد.
GREATER_THAN_OR_EQUAL

field داده شده بزرگتر یا مساوی با value داده شده است.

نیاز دارد:

  • این field در orderBy اول قرار دارد.
EQUAL field داده شده برابر با value داده شده است.
NOT_EQUAL

field داده شده با value داده شده برابر نیست.

نیاز دارد:

  • هیچ NOT_EQUAL , NOT_IN , IS_NOT_NULL , یا IS_NOT_NAN دیگری وجود ندارد .
  • آن field در orderBy است.
ARRAY_CONTAINS field داده شده آرایه ای است که حاوی value داده شده است.
IN

field داده شده حداقل با یک مقدار در آرایه داده شده برابر است.

نیاز دارد:

  • این value یک ArrayValue غیر خالی است که مشمول محدودیت‌های تفکیک است.
  • هیچ فیلتر NOT_IN در همان جستار وجود ندارد.
ARRAY_CONTAINS_ANY

field داده شده آرایه ای است که حاوی هر یک از مقادیر آرایه داده شده است.

نیاز دارد:

  • این value یک ArrayValue غیر خالی است که مشمول محدودیت‌های تفکیک است.
  • هیچ فیلتر دیگری ARRAY_CONTAINS_ANY در همان تفکیک وجود ندارد.
  • هیچ فیلتر NOT_IN در همان جستار وجود ندارد.
NOT_IN

مقدار field در آرایه داده شده نیست.

نیاز دارد:

  • این value یک ArrayValue غیر خالی با حداکثر 10 مقدار است.
  • هیچ OR , IN , ARRAY_CONTAINS_ANY , NOT_IN , NOT_EQUAL , IS_NOT_NULL , یا IS_NOT_NAN .
  • آن field در orderBy است.

UnaryFilter

فیلتری با یک عملوند.

نمایندگی JSON
{
  "op": enum (Operator),

  // Union field operand_type can be only one of the following:
  "field": {
    object (FieldReference)
  }
  // End of list of possible types for union field operand_type.
}
زمینه های
op

enum ( Operator )

اپراتور unary برای درخواست.

operand_type فیلد اتحادیه. استدلال به فیلتر. operand_type می تواند تنها یکی از موارد زیر باشد:
field

object ( FieldReference )

فیلدی که اپراتور برای آن اعمال می شود.

اپراتور

یک اپراتور یکنواخت

Enums
OPERATOR_UNSPECIFIED نامشخص این مقدار نباید استفاده شود.
IS_NAN field داده شده برابر با NaN است.
IS_NULL field داده شده برابر با NULL است.
IS_NOT_NAN

field داده شده برابر با NaN نیست.

نیاز دارد:

  • هیچ NOT_EQUAL , NOT_IN , IS_NOT_NULL , یا IS_NOT_NAN دیگری وجود ندارد .
  • آن field در orderBy است.
IS_NOT_NULL

field داده شده برابر با NULL نیست.

نیاز دارد:

  • یک NOT_EQUAL , NOT_IN , IS_NOT_NULL , یا IS_NOT_NAN .
  • آن field در orderBy است.

سفارش

یک سفارش در یک میدان

نمایندگی JSON
{
  "field": {
    object (FieldReference)
  },
  "direction": enum (Direction)
}
زمینه های
field

object ( FieldReference )

زمینه برای سفارش.

direction

enum ( Direction )

جهت سفارش توسط. پیش‌فرض ASCENDING است.

جهت

یک جهت.

Enums
DIRECTION_UNSPECIFIED نامشخص
ASCENDING صعودی.
DESCENDING نزولی.

یافتن نزدیکترین

پیکربندی جستجوی نزدیکترین همسایگان.

نمایندگی JSON
{
  "vectorField": {
    object (FieldReference)
  },
  "queryVector": {
    object (Value)
  },
  "distanceMeasure": enum (DistanceMeasure),
  "limit": integer
}
زمینه های
vectorField

object ( FieldReference )

ضروری. یک فیلد برداری نمایه شده برای جستجو. فقط اسنادی که حاوی بردارهایی هستند که ابعاد آنها با queryVector مطابقت دارد، قابل بازگشت هستند.

queryVector

object ( Value )

ضروری. بردار پرس و جو که ما در آن جستجو می کنیم. باید بردار با ابعاد بیش از 2048 باشد.

distanceMeasure

enum ( DistanceMeasure )

ضروری. اندازه‌گیری فاصله برای استفاده، لازم است.

limit

integer

ضروری. تعداد نزدیکترین همسایگان برای بازگشت. باید یک عدد صحیح مثبت بیش از 1000 نباشد.

اندازه گیری فاصله

اندازه گیری فاصله برای مقایسه بردارها.

Enums
DISTANCE_MEASURE_UNSPECIFIED نباید تنظیم شود.
EUCLIDEAN فاصله EUCLIDEAN بین بردارها را اندازه گیری می کند. برای کسب اطلاعات بیشتر به اقلیدسی مراجعه کنید
COSINE بردارها را بر اساس زاویه بین آنها مقایسه می کند، که به شما امکان می دهد شباهتی را اندازه گیری کنید که بر اساس بزرگی بردارها نیست. توصیه می کنیم از DOT_PRODUCT با بردارهای نرمال شده واحد به جای فاصله COSINE استفاده کنید که از نظر ریاضی با عملکرد بهتر معادل است. برای کسب اطلاعات بیشتر به شباهت کسینوس مراجعه کنید.
DOT_PRODUCT شبیه کسینوس است اما تحت تأثیر بزرگی بردارها است. برای کسب اطلاعات بیشتر به محصول نقطه مراجعه کنید.