MongoDB के साथ काम करने वाले डेटा टाइप और ड्राइवर

यहां दी गई टेबल में, Cloud Firestore के लिए इस्तेमाल किए जा सकने वाले MongoDB डेटा टाइप, ड्राइवर, और तीसरे पक्ष के टूल की सूची दी गई है.

डेटा टाइप

BSON टाइप इस्तेमाल किया जा सकता है
32-बिट इंटीजर हां
64-बिट वाला पूर्णांक हां
सरणी हां
बाइनरी डेटा हां
बूलियन हां
तारीख हां
DBPointer नहीं
Decimal128 हां
डबल-साइज़ बेड हां
JavaScript नहीं
JavaScript (स्कोप के साथ) नहीं
MaxKey हां
MinKey हां
शून्य हां
ऑब्जेक्ट हां
ObjectId हां
रेगुलर एक्सप्रेशन हां
स्ट्रिंग हां
चिह्न नहीं
टाइमस्टैम्प हां
अनिर्धारित नहीं

दस्तावेज़ _id

किसी दस्तावेज़ में टॉप-लेवल _id फ़ील्ड, इनमें से किसी एक टाइप का होना चाहिए:

  • ObjectId
  • स्ट्रिंग
  • 64-बिट वाला पूर्णांक
  • 32-बिट इंटीजर
  • डबल-साइज़ बेड
  • बाइनरी
  • ऑब्जेक्ट
  • बूलियन

_id का कुल साइज़ 1,500 बाइट से ज़्यादा नहीं होना चाहिए.

ऑब्जेक्ट-टाइप आईडी में मौजूद हर वैल्यू, आईडी के साथ काम करने वाले टाइप की होनी चाहिए. इसके अलावा, वैल्यू का कलेक्शन भी आईडी के साथ काम करने वाले टाइप का होना चाहिए.

अन्य BSON टाइप का इस्तेमाल नहीं किया जा सकता.

भाषाएं और MongoDB ड्राइवर

Cloud Firestore, ड्राइवर के इन वर्शन के साथ काम करता है:

भाषा ड्राइवर के वर्शन
Java 5.x
Node.js 6.x
5.x
Python 4.x
3.x (x ≥ 12)
जाएं 2.x
C# 3.x
Ruby 2.x (x ≥ 16)

OIDC की मदद से पुष्टि करने की सुविधा

Go, C#, और Ruby ड्राइवर, Google Cloud से OpenID Connect (OIDC) ऑथेंटिकेशन के साथ काम करते हैं. यह सुविधा, ड्राइवर के उन सभी वर्शन के लिए उपलब्ध है जो काम करते हैं.

Java, Node.js, और Python ड्राइवर, Google Cloud से ओआईडीसी की पुष्टि करने की सुविधा के साथ काम करते हैं. यह सुविधा, ड्राइवर के इन वर्शन से शुरू होती है:

  • Java: 4.10
  • Node.js: 6.7
  • Python: 4.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 एपीआई, प्रोटोकॉल बफ़र का इस्तेमाल करता है. इसलिए, कुछ टाइप सीधे तौर पर मैप हो जाते हैं, जबकि कुछ के लिए खास मैप रिप्रज़ेंटेशन की ज़रूरत होती है.

मैपिंग की खास जानकारी

यहां दी गई टेबल से पता चलता है कि BSON डेटा टाइप, Cloud Firestore प्रोटोकॉल बफ़र के रिप्रज़ेंटेशन से कैसे जुड़े हैं.

डायरेक्ट मैपिंग

दोनों सिस्टम में, इन टाइप के लिए एक जैसे फ़ील्ड होते हैं.

BSON टाइप BSON Cloud Firestore Proto नोट
डबल 1.23 double_value: 1.23
String "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
64-बिट इंटिजर Long('1234567890') integer_value: 1234567890
तारीख ISODate('2026-05-22T04:00:00Z')
timestamp_value {
seconds: 1779470400
nanos: 0
}
Cloud Firestore टाइमस्टैंप वैल्यू, माइक्रोसेकंड की सटीक जानकारी के साथ सेव की जाती हैं. हालांकि, BSON में बदलने पर, मिलीसेकंड से ज़्यादा सटीक जानकारी मिट जाती है.

Cloud Firestore एपीआई में मैप के तौर पर दिखाए गए BSON टाइप

इन BSON टाइप को Cloud Firestore map_value में रैप किया जाता है. साथ ही, टाइप को दिखाने के लिए खास कुंजियों का इस्तेमाल किया जाता है.

BSON टाइप BSON Cloud Firestore Proto नोट
32-बिट इंटिजर 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"
}
}
}
लोअरकेस हेक्स स्ट्रिंग.
टाइमस्टैंप (इंटरनल) 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 में नहीं हैं

BSON में बदले जाने पर, इन Cloud Firestore टाइप को खास तौर पर स्ट्रक्चर्ड मैप के तौर पर दिखाया जाता है.

Cloud Firestore टाइप BSON Cloud Firestore Proto
GeoPoint
{
"__fs_geopoint__": {
"latitude": 37.42,
"longitude": -122.08
}
}
geo_point_value {
latitude: 37.42
longitude: -122.08
}
वेक्टर
{
"__fs_vector__": [
1.0,
2.0
]
}
map_value {
fields {
key: "__type__"
value {
string_value: "__vector__"
}
}
fields {
key: "value"
value {
array_value {
...
}
}
}
}
Document Ref
{
"__fs_ref__": "projects/.../documents/col/doc"
}
reference_value: "projects/.../documents/col/doc"

फ़ील्ड के नाम

MongoDB के ऐसे फ़ील्ड नाम जो __.*__ से मैच करते हैं उन्हें Cloud Firestore में सेव करते समय, r: को शामिल करके एस्केप किया जाता है. उदाहरण के लिए, BSON फ़ील्ड __foo__, Cloud Firestore में __r:foo__ बन जाता है.

क्लाइंट SDK टूल में BSON डेटा टाइप

Cloud Firestore क्लाइंट एसडीके का इस्तेमाल करते समय, खास एसडीके क्लास का इस्तेमाल करके, बीएसओएन डेटा टाइप दिखाए जा सकते हैं. जैसे, 128-बिट डेसिमल, रेगुलर एक्सप्रेशन, और बीएसओएन टाइमस्टैंप.

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),
});
    
Java
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
}
    

आगे क्या करना है