انواع داده‌ها و درایورهای MongoDB پشتیبانی‌شده

جدول‌های زیر انواع داده، درایورها، و ابزارهای شخص ثالث MongoDB پشتیبانی‌شده برای Cloud Firestore را فهرست می‌کند.

انواع داده‌ها

نوع BSON پشتیبانی‌شده
عدد صحیح ۳۲ بیتی بله
عدد صحیح ۶۴ بیتی بله
آرایه بله
داده دودویی بله
بولی بله
تاریخ بله
DBPointer نه
Decimal128 بله
دونفره بله
جاوا اسکریپت نه
جاوا اسکریپت (با دامنه) نه
MaxKey بله
MinKey بله
Null بله
شیء بله
ObjectId بله
عبارت باقاعده بله
تار بله
نماد نه
مُهر زمان بله
تعریف‌نشده نه

سند _id

فیلد _id سطح بالا در سند باید یکی از انواع زیر باشد:

  • ObjectId
  • تار
  • عدد صحیح ۶۴ بیتی
  • عدد صحیح ۳۲ بیتی
  • دونفره
  • دودویی
  • شیء
  • بولی

اندازه کل _id نباید از ۱۵۰۰ بایت بیشتر باشد.

هر مقدار در شناسه از نوع شیء باید از نوع شناسه پشتیبانی‌شده یا آرایه‌ای از مقادیر باشد که هرکدام از نوع شناسه پشتیبانی‌شده باشند.

انواع دیگر BSON پشتیبانی نمی‌شوند.

زبان‌ها و درایورهای MongoDB

‫Cloud Firestore از نسخه‌های درایور زیر پشتیبانی می‌کند:

زبان نسخه‌های درایور
جاوا 5.x
Node.js 6.x
5.x
پایتون ‫4.x
3.x (x ≥ 12)
رفتن ‫۲.x
سی شارپ ‫3.x
Ruby 2.x (x ≥ 16)

پشتیبانی از اصالت‌سنجی OIDC

درایورهای Go،‏ C#‎، و Ruby از اصالت‌سنجی OpenID Connect (OIDC) از Google Cloud برای همه نسخه‌های درایور پشتیبانی‌شده پشتیبانی می‌کنند.

درایورهای Java،‏ Node.js، و Python از اصالت‌سنجی OIDC از Google Cloud با شروع از نسخه‌های درایور زیر پشتیبانی می‌کنند:

  • جاوا: ۴٫۱۰
  • Node.js: 6.7
  • پایتون: ۴٫۷

ابزار شخص ثالث

Cloud Firestore از ابزارهای شخص ثالث شرح‌داده‌شده در این بخش پشتیبانی می‌کند.

ابزار شرح یادداشت‌ها
mongoimport MongoDB Database Tools بار کردن انبوه داده‌ها را ببینید
mongoexport MongoDB Database Tools
mongodump MongoDB Database Tools
mongorestore MongoDB Database Tools بار کردن انبوه داده‌ها را ببینید
mongosh MongoDB Shell
Mongoose ابزار مدل‌سازی شیء MongoDB
MongoDB Compass ابزار میانای کاربر گرافیکی برای کاوش داده‌ها

سازگاری نوع BSON و Cloud Firestore

این بخش نگاشت بین انواع MongoDB BSON و مقادیر Cloud Firestore را خلاصه می‌کند. ازآنجایی‌که BSON یک قالب دودویی است و Cloud Firestore API از میان‌گیرهای پروتکل استفاده می‌کند، برخی‌از انواع مستقیماً نگاشت می‌شوند، درحالی‌که برخی دیگر به نمایش‌های نگاشت خاصی نیاز دارند.

نمای کلی تخصیص

جدول‌های زیر نشان می‌دهند که انواع داده‌های BSON چگونه با Cloud Firestore نمایش‌های میان‌گیر پروتکل مطابقت دارند.

نگاشت‌های مستقیم

این نوع‌ها در هر دو سیستم معادل مستقیم دارند.

نوع BSON BSON ‫Cloud Firestore Proto یادداشت‌ها
دوبرابر 1.23 double_value: 1.23
رشته "hello" string_value: "hello"
شیء
{
"a": 1.23
}
map_value {
fields {
key: "a"
value {
double_value: 1.23
}
}
}
Array
[
1.23,
"a"
]
array_value {
values {
double_value: 1.23
}
values {
string_value: "a"
}
}
دوحالتی (زیرنوع صفر) BinData(0, 'SGVsbG8=') bytes_value: "Hello"
بولی true boolean_value: true
Null null null_value: NULL_VALUE
عدد صحیح ۶۴ بیتی Long('1234567890') integer_value: 1234567890
تاریخ ISODate('2026-05-22T04:00:00Z')
timestamp_value {
seconds: 1779470400
nanos: 0
}
مقادیر مُهر زمان Cloud Firestore با دقت میکروثانیه ذخیره می‌شوند، اما هر چیزی فراتر از دقت میلی‌ثانیه هنگام تبدیل به BSON ازبین می‌رود.

انواع BSON که به‌عنوان نقشه در میانای برنامه‌سازی کاربردی Cloud Firestore نشان داده شده‌اند

این انواع BSON در Cloud Firestore map_value با کلیدهای ویژه برای نشان دادن نوع پیچیده شده‌اند.

نوع BSON BSON ‫Cloud Firestore Proto یادداشت‌ها
عدد صحیح ۳۲ بیتی 123
map_value {
fields {
key: "__int__"
value {
integer_value: 123
}
}
}
دوحالتی (زیرنوع غیرصفر) BinData(1, 'AQIDBA==')
map_value {
fields {
key: "__binary__"
value {
bytes_value: "<subtype + data>"
}
}
}
بایت زیرنوع به داده‌ها اضافه شد.
ObjectId ObjectId('67eea9446dc71ec469e9496a')
map_value {
fields {
key: "__oid__"
value {
string_value:
"67eea9446dc71ec469e9496a"
}
}
}
رشته hex با حروف کوچک.
مُهر زمان (داخلی) Timestamp(123, 1)
map_value {
fields {
key: "__request_timestamp__"
value {
map_value {
fields {
key: "seconds"
value {
integer_value: 123
}
}
fields {
key: "increment"
value {
integer_value: 1
}
}
}
}
}
}
مُهر زمان داخلی MongoDB.
عبارت باقاعده RegExp('.*', 'im')
map_value {
fields {
key: "__regex__"
value {
map_value {
fields {
key: "pattern"
value {
string_value: ".*"
}
}
fields {
key: "options"
value {
string_value: "im"
}
}
}
}
}
}
Min Key MinKey()
map_value {
fields {
key: "__min__"
value {
null_value: NULL_VALUE
}
}
}
Max Key MaxKey()
map_value {
fields {
key: "__max__"
value {
null_value: NULL_VALUE
}
}
}
Decimal128 Decimal128('4E7')
map_value {
fields {
key: "__decimal128__"
value {
string_value: "4E7"
}
}
}

Cloud Firestore نوعی که به‌طور بومی در BSON نیست

این نوع‌های Cloud Firestore هنگام تبدیل به BSON به‌صورت نقشه‌هایی با ساختار ویژه نمایش داده می‌شوند.

نوع Cloud Firestore BSON ‫Cloud Firestore Proto
GeoPoint
{
"__fs_geopoint__": {
"latitude": 37.42,
"longitude": -122.08
}
}
geo_point_value {
latitude: 37.42
longitude: -122.08
}
Vector
{
"__fs_vector__": [
1.0,
2.0
]
}
map_value {
fields {
key: "__type__"
value {
string_value: "__vector__"
}
}
fields {
key: "value"
value {
array_value {
...
}
}
}
}
مرجع سند
{
"__fs_ref__": "projects/.../documents/col/doc"
}
reference_value: "projects/.../documents/col/doc"

نام فیلدها

نام فیلدهای MongoDB که با __.*__ مطابقت دارند، هنگام ذخیره شدن در Cloud Firestore، با گنجاندن r: گریز داده می‌شوند. برای مثال، فیلد BSON __foo__ در Cloud Firestore به __r:foo__ تبدیل می‌شود.

انواع داده‌های BSON در کیت‌های توسعه نرم‌افزار کارخواه

هنگام استفاده از کیت‌های توسعه نرم‌افزار مشتری Cloud Firestore، می‌توانید از کلاس‌های تخصصی کیت توسعه نرم‌افزار برای نمایش انواع داده‌های BSON مانند اعشار ۱۲۸ بیتی، عبارت‌های باقاعده، و مُهرهای زمان BSON استفاده کنید.

Node.js
const { RegexValue, Decimal128Value, BsonTimestamp } = require('@google-cloud/firestore');

// Setting fields with BSON data types
const res = await db.collection('foo').doc('bar').set({
  regex: new RegexValue('myRegexPattern', 'i'),
  decimal: new Decimal128Value('0.73e-7'),
  bsonTimestamp: new BsonTimestamp(1732754912, 500),
});
    
جاوا
import com.google.cloud.firestore.BsonTimestamp;
import com.google.cloud.firestore.Decimal128Value;
import com.google.cloud.firestore.RegexValue;
import java.util.HashMap;
import java.util.Map;

Map<String, Object> data = new HashMap<>();
data.put("regex", new RegexValue("myRegexPattern", "i"));
data.put("decimal", new Decimal128Value("0.73e-7"));
data.put("bson_timestamp", new BsonTimestamp(1732754912, 500));

db.collection("foo").doc("bar").set(data);
    

Java

import com.google.firebase.firestore.BsonTimestamp;
import com.google.firebase.firestore.Decimal128Value;
import com.google.firebase.firestore.RegexValue;
import java.util.HashMap;
import java.util.Map;

Map<String, Object> data = new HashMap<>();
data.put("regex", new RegexValue("myRegexPattern", "i"));
data.put("decimal", new Decimal128Value("0.73e-7"));
data.put("bson_timestamp", new BsonTimestamp(1732754912, 500));

db.collection("foo").doc("bar").set(data);
    
رفتن
import (
    "context"

    "cloud.google.com/go/firestore"
)

func writeBsonTypes(ctx context.Context, client *firestore.Client) error {
    _, err := client.Collection("foo").Doc("bar").Set(ctx, map[string]interface{}{
        "regex":     firestore.RegexValue{Pattern: "myRegexPattern", Options: "i"},
        "decimal":   firestore.Decimal128Value{Value: "0.73e-7"},
        "bson_timestamp": firestore.BsonTimestamp{Seconds: 1732754912, Increment: 500},
    })
    return err
}
    

حالا چه می‌شود