Docs Menu
Docs Home
/
MongoDB Atlas
/ / /

Global Modules

項目一覧

  • JSON Web Tokens (utils.jwt)
  • utils.jwt.encode()
  • uts.jwt.decode()
  • 暗号化( utils.crypto
  • uts.crypto.encrypt()
  • uts.crypto.decrypt()
  • uts.crypto.sign()
  • uts.crypto.verify()
  • uts.crypto.hmac()
  • uts.crypto.hash()
  • JSON(JavaScript オブジェクト表記)
  • JSON.parse()
  • JSON.stringify()
  • EJSON (拡張 JSON)
  • EJSON.parse()
  • EJSON.stringify()
  • BSON (バイナリ JSON)
  • BSON.ObjectId
  • BSON.BSONRegExp
  • BSON.Binary
  • BSON.MaxKey
  • BSON.MinKey
  • BSON.Int32
  • BSON.Int 32 ()
  • BSON.Long
  • BSON.Double
  • BSON.Decimal128

すべての関数は、一般的なデータ変換、エンコード、処理作業をサポートする組み込みグローバル モジュールにアクセスできます。 各モジュールに固有のグローバル変数を介して、関数ソースコード内のモジュールにアクセスできます。

Tip

これらのグローバル モジュールは Node.js 組み込みモジュールと同じではありません。 サポートされている Node.js モジュール(インポート方法を含む)の詳細については、「組み込みモジュール サポート 」を参照してください。

Module
説明
JSON Web Tokens
JSON Web トークンの読み取りと書き込みのメソッド。
ハッシュや署名などの暗号化アルゴリズムを実装するメソッド。
JSON の string とオブジェクト表現を変換するメソッド データ。
拡張 JSONデータの string 表現とオブジェクト表現の間で変換するメソッド。
バイナリ JSON を作成するメソッド オブジェクトと の間でさまざまな BSON データ型とエンコーディングの間で変換が行われます。

JSON Web Token の作成と読み取りが可能utils.jwt インターフェースを持つ。

方式
説明
指定された payloadsigningMethodsecret に対してエンコードされたJSON web token stringを生成します。
JSON web token stringの payload を復号化します。

指定された signingMethodsecret に基づいて、payload 用にエンコードされたJSON web token stringを生成します。

utils.jwt.encode(
signingMethod: string,
payload: object,
secret: string,
customHeaderFields: object
): string
Parameter
タイプ
説明
signingMethod
string

JWT をエンコードするときに使用する暗号化アルゴリズム。 Atlas は次の JWT 署名メソッドをサポートしています。

  • "HS256": SHA- 256を使用する HMAC

  • "HS384": SHA- 384を使用する HMAC

  • "HS512": SHA- 512を使用する HMAC

  • "RS256": RSA-PKCS 1 -v 1 _ 5 SHA- 256を使用

  • "RS384": RSA-PKCS 1 -v 1 _ 5 SHA- 384を使用

  • "RS512": RSA-PKCS 1 -v 1 _ 5 SHA- 512を使用

  • "ES256": P- 256と SHA- 256を使用する ECDSA

  • "ES384": P- 384と SHA- 384を使用する ECDSA

  • "ES512": P- 512と SHA- 512を使用する ECDSA

  • "PS256": SHA- 256と SHA- 256とともに MGF 1を使用する RSA-PSS

  • "PS384": SHA- 384と SHA- 384とともに MGF 1を使用する RSA-PSS

  • "PS512": SHA- 512と SHA- 512とともに MGF 1を使用する RSA-PSS

payload
オブジェクト
トークンのクレームと追加の関連データを指定する JSON オブジェクト。
secret
string

Atlas がトークンに署名するために使用する秘密の string。 string の値は、使用する署名方法によって異なります。

    • "HS256""HS384""HS512" : ランダムな文字列。

    • "RS256""RS384" 、および"RS512" : PKCS# 8形式の RSA-SHA秘密キー。

    • "PS256""PS384" 、および"PS512" : PKCS# 8形式の RSA-PSS秘密キー。

    • "ES256""ES384""ES512" : ECDSA PKCS#8 形式の秘密キー。

customHeaderFields
オブジェクト
JSON ヘッダー JSONに含める追加フィールドを指定する オブジェクト。JSON web token

指定されたpayloadに対してエンコードされたJSON Web Token string を返します。

次のJSON web tokenクレーム オブジェクトについて考えてみましょう。

{
"sub": "1234567890",
"name": "Joe Example",
"iat": 1565721223187
}

utils.jwt.encode() を呼び出すと、クレーム オブジェクトをJSON web token stringとしてエンコードできます。 次の関数は、HS512 署名メソッドとシークレット "SuperSecret" を使用してJSON web tokenをエンコードします。

exports = function() {
const signingMethod = "HS512";
const payload = {
"sub": "1234567890",
"name": "Joe Example",
"iat": 1565721223187
};
const secret = "SuperSecret";
return utils.jwt.encode(signingMethod, payload, secret);
}
"eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvZSBTY2htb2UiLCJpYXQiOjE1NjU3MjEyMjMxODd9.-QL15ldu2BYuJokNWT6YRiwZQIiIpvq6Kyv-C6qslNdNiUVxo8zqLJZ1iEkNf2yZKMIrQuMCtIC1tzd2H31AxA"

提供されたJSON web token stringの payload を復号化します。 key の値は、 JSON web token stringのエンコードに使用されたシークレット値に対応している必要があります。

utils.jwt.decode(
jwtString: string,
key: string,
returnHeader: boolean
): object
Parameter
タイプ
説明
jwtString
string
秘密の値で署名されたクレームのセットをエンコードするJSON web token string 。
key
string

Atlas がトークンの署名を検証するために使用する string。 string の値は、使用する署名方法によって異なります。

  • "HS256""HS384""HS512" : トークンに署名するために使用されたランダムな文字列。

  • "RS256""RS384""RS512" : トークンに署名するために使用された秘密キーに対応する RSA-SHA公開キー。

  • "PS256""PS384""PS512" : トークンに署名するために使用された秘密キーに対応する RSA-SHA公開キー。

  • "ES256""ES384""ES512" : ECDSA トークンに署名するために使用された秘密キーに対応する公開キー。

returnHeader
ブール値
trueの場合、 のJSON web token JSON ヘッダー を返します デコードされたペイロードに加えて、。
acceptedSigningMethods
string[]
任意。 使用された署名方法の配列。 たとえば、 ["PS256", "HS256"] 。 この引数は、 既知のJSON web token のセキュリティ脆弱性 を防ぐために含める必要があります。 。

returnHeaderfalseの場合、 はデコードされた EJSON ペイロードを返します。

returnHeaderが の場合、 はtrue JSE ヘッダー を含むオブジェクトを返します フィールドに と、header フィールドにデコードされた EJSONpayload ペイロードが含まれます。

{
"header": {
"<JOSE Header Field>": <JOSE Header Value>,
...
},
"payload": {
"<JWT Claim Field>": <JWT Claim Value>,
...
}
}

次の署名されたJSON web token stringについて考えます。

"eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvZSBTY2htb2UiLCJpYXQiOjE1NjU3MjEyMjMxODd9.-QL15ldu2BYuJokNWT6YRiwZQIiIpvq6Kyv-C6qslNdNiUVxo8zqLJZ1iEkNf2yZKMIrQuMCtIC1tzd2H31AxA"

JSON web tokenは、シークレット値 "SuperSecret" を使用して HS512 署名メソッドを使用して署名されています。 JSON web tokenのクレーム オブジェクト utils.jwt.decode() をデコードできます。 次の関数は、 JSON web token stringをEJSONオブジェクトにデコードします。

exports = function(jwtString) {
const key = "SuperSecret";
return utils.jwt.decode(jwtString, key, false, ["HS512"]);
}
{
"sub": "1234567890",
"name": "Joe Example",
"iat": { "$numberDouble": 1565721223187 }
}

utils.cryptoインターフェースの暗号化アルゴリズムを使用して、データを暗号化、復号化、署名、検証できます。

方式
説明
特定の暗号化方法とキーを使用して、指定されたテキスト string から暗号化されたテキスト string を生成します。
指定されたテキスト string を、特定の暗号化方法とキーを使用して復号化します。
秘密キーを使用して、指定されたメッセージに対して暗号化された一意の署名を生成します。
指定されたメッセージと公開鍵に対して署名が有効であることを確認します。
HMAC を生成する 特定の入力とシークレットからの署名。
指定された入力とハッシュ関数のハッシュ値を生成します。

指定された暗号化方法とキーを使用して、指定されたテキストから暗号化されたテキスト string を生成します。

utils.crypto.encrypt(
encryptionType: string,
message: string,
key: string
): BSON.Binary
Parameter
タイプ
説明
encryptionType
string

メッセージを暗号化する暗号化のタイプ。 次の暗号化のタイプがサポートされています。

message
string
暗号化するテキスト string。
key
string

テキストを暗号化するために使用される暗号化キー。 使用する必要があるキーは、暗号化の方法によって異なります。

  • AES: 16バイト、 24バイト、または32バイトのランダム文字列

指定された暗号化タイプとキーで暗号化されたテキスト string を含むBSON Binaryオブジェクト。

次の 32 バイトの AES 暗号化のキーを含むaesEncryptionKeyという名前のを定義したとします。

"603082712271C525E087BD999A4E0738"

この AES キーを使用すると、次の関数を使用してメッセージを base64 string に暗号化できます。

exports = function() {
const message = "MongoDB is great!"
const key = context.values.get("aesEncryptionKey");
const encryptedMessage = utils.crypto.encrypt("aes", message, key);
return encryptedMessage.toBase64();
}
"WPBuIvJ6Bity43Uh822dW8QlVYVJaFUiDeUjlTiJXzptUuTYIKPlXekBQAJb"

指定された暗号化タイプとキーを使用して、指定されたテキスト string を復号化します。 暗号化のタイプとキーの両方が暗号化に使用されたものと同じ場合は、暗号化されていない元のテキストが返されます。

utils.crypto.decrypt(
encryptionType: string,
encryptedMessage: BSON.Binary,
key: string
): BSON.Binary
Parameter
タイプ
説明
encryptionType
string

提供されたテキストを暗号化するために使用された暗号化のタイプ。 次の暗号化のタイプがサポートされています。

encryptedMessage
復号化対象の暗号化されたテキスト string をエンコードする BSON バイナリ。
key
string

テキストを復号化するために使用される暗号化キー。 使用する必要があるキーは、暗号化のタイプによって異なります。

  • AES: 16バイト、 24バイト、または32バイトのランダム文字列

復号化されたメッセージを含むBSON Binaryオブジェクト。

提供された暗号化されたメッセージが指定されたメソッドとキーで暗号化されている場合、復号化されたメッセージは元のメッセージと同じになります。

次の32バイトの AES暗号化のキーを含むaesEncryptionKeyという名前の値を定義したとします。

"603082712271C525E087BD999A4E0738"

この AES キーを使用して、次の関数を使用して同じキーで暗号化された base64 string を復号化できます。

exports = function(encryptedMessage) {
// The encrypted message must be a BSON.Binary
if(typeof encryptedMessage === "string") {
encryptedMessage = BSON.Binary.fromBase64(encryptedMessage)
}
const key = context.values.get("aesEncryptionKey");
const decryptedMessage = utils.crypto.decrypt("aes", encryptedMessage, key);
return decryptedMessage.text();
}
"MongoDB is great!"

秘密キーを使用して、メッセージに暗号化された一意の署名を生成します。 署名は、対応する公開キーで検証され、署名者が秘密キーにアクセスできること、およびメッセージの内容が署名以降に変更されていないことを確認できます。

utils.crypto.sign(
encryptionType: string,
message: string,
privateKey: string,
signatureScheme: string
): BSON.Binary
Parameter
タイプ
説明
encryptionType
string

秘密キーと公開キーのペアの生成に使用された暗号化のタイプ。 次の暗号化のタイプがサポートされています。

message
string
署名するテキスト string。
privateKey
string

指定された暗号化タイプで生成された秘密キー。

重要。 すべての RSA キーが同じ形式を使用するわけではありません。 Atlas は標準の PKCS#1 に準拠した秘密キーでのみメッセージに署名できます 形式。この形式の秘密キーのヘッダーは-----BEGIN RSA PRIVATE KEY----- です。

次の shell スクリプトを使用して、有効な RSA 秘密キーと公開キーのペアを生成し、各キーを独自のテキストファイルに保存できます。

# Generate an RSA SSH key pair
# Save the key to a file called `rsa_key` when prompted
ssh-keygen -t rsa -m PEM -b 2048 -C "2048-bit RSA Key"
# Private Key
cat rsa_key > rsa.private.txt
# Public Key
ssh-keygen -f rsa_key.pub -e -m pem > rsa.public.txt
signatureScheme
string

任意。デフォルト: "pss"

パディング スキーム 署名が使用する必要があるドキュメント。 Atlas は、次のスキームによるメッセージの署名をサポートしています。

BSON.Binary 暗号化署名 指定された秘密キーを使用して署名されたメッセージの場合

次の RSA 秘密キーを含むrsaPrivateKeyという名前のが定義されているとします。

-----BEGIN RSA PRIVATE KEY-----
MIICXAIBAAKBgQDVsEjse2qO4v3p8RM/q8Rqzloc1lee34yoYuKZ2cemuUu8Jpc7
KFO1+aJpXdbSPZNhGLdANn8f2oMIZ1R9hgEJRn/Qm/YyC4RPTGg55nzHqSlziNZJ
JAyEUyU7kx5+Kb6ktgojhk8ocZRkorM8FEylkrKzgSrfay0PcWHPsKlmeQIDAQAB
AoGAHlVK1L7kLmpMbuP4voYMeLjYE9XdVEEZf2GiFwLSE3mkJY44033y/Bb2lgxr
DScOf675fFUAEK59ATlhxfu6s6rgx+g9qQQ+mL74YZWPqiZHBPjyMRaBalDVC4QF
YJ+DopFcB8hY2ElXnbK70ALmVYNjw3RdmC97h0YfOsQcWW0CQQD18aeuPNicVnse
Ku22vvhvQYlabaQh4xdkEIxz1TthZj48f61wZwEMipYqOAc5XEtDlNnxgeipv0yF
RHstUjwXAkEA3m0Br/U/vC9evuXppWbONana08KLgfELyd3Uw9jG7VKJZTBH5mS8
7CB68aEF8egrJpo8Ss8BkWrvCxYDb4Y77wJAUlbOMZozVtvpKidrIFR9Lho91uWA
Hsw9h4W20AzibXBig7SnJ0uE4WMAdS/+0yhgFkceVCmO8E2YW8Gaj4jJjwJASxtg
AHy+ItuUEL4uIW4Pn8tVW0BMP3qX0niXyfI/ag/+2S5uePv3V3y4RzNqgH83Yved
+FziWKpVQdcTHeuj/QJBAJl1G3WFruk0llIoKKbKljaEiCm1WCTcuEPbdOtkJYvO
9ZYQg/fji70FERkq2KHtY7aLhCHzy0d4n9xgE/pjV+I=
-----END RSA PRIVATE KEY-----

この RSA キーでは、次の機能を使用してメッセージに署名できます。

exports = function() {
const message = "MongoDB is great!"
const rsaPrivateKey = context.values.get("rsaPrivateKey");
const signature = utils.crypto.sign("rsa", message, rsaPrivateKey, "pss");
return signature.toBase64();
}
"SpfXcJwPbypArt+XuYQyuZqU52YCAY/sZj2kiuin2b6/RzyM4Ek3n3spOtqZJqxn1tfQavxIX4V+prbs74/pOaQkCLekl9Hoa1xOzSKcGoRd8U+n1+UBY3d3cyODGMpyr8Tim2HZAeLPE/D3Q36/K+jpgjvrJFXsJoAy5/PV7iEGV1fkzogmZtXWDcUUBBTTNPY4qZTzjNhL4RAFOc7Mfci+ojE/lLsNaumUVU1/Eky4vasmyjqunm+ULCcRmgWtGDMGHaQV4OXC2LMUe9GOqd3Q9ghCe0Vlhn25oTh8cXoGpd1Fr8wolNa//9dUqSM+QYDpZJXGLShX/Oa8mPwJZKDKHtqrS+2vE6S4dDWR7zKDza+DeovOeCih71QyuSYMXSz+WWGgfLzv/syhmUXP/mjqgLmJU6Kwg5htajDoylpzLC0BLGT4zDZEwBrq/AjwRs/EPjYdFgGCt1WCbbVlDyXvvH1ekDrzACzumhiMSZNNa+ZH3JmMJxTCQWDfiTeAfkauaaZHKIj2q2/QE7vuAhNcVPJ2YgpXnvnQHJpEZBc/Y3Q6JLxom6+cGC4P//9d++r2cwzXIkqD+wSGZVSVtpm5CLtWMRSK5FX2dv16bM+LE8ozoRvtMUDTrQ8SSSDGxyuYbvN9b2fYYPcWpCMchqOBXV6eZGoMldaHX3Qy5h8="

指定された署名が指定されたメッセージと公開鍵に対して有効であることを確認します。

署名が有効な場合は、署名者が対応する秘密キーにアクセスできること、およびメッセージの内容が署名以降に変更されていないことが保証されます。

utils.crypto.verify(
encryptionType: string,
message: string,
publicKey: string,
signature: BSON.Binary,
signatureScheme: string
): boolean
Parameter
タイプ
説明
encryptionType
string

秘密キーと公開キーのペアの生成に使用された暗号化のタイプ。 次の暗号化のタイプがサポートされています。

message
string
署名を検証するテキスト string。 署名が有効な場合、これは署名された正確なメッセージになります。
publicKey
string

署名を検証する公開鍵。 署名が有効な場合、これはメッセージに署名するために使用された秘密キーの対応する公開キーです。

重要。 すべての RSA キーが同じ形式を使用するわけではありません。 Atlas は、標準の PKCS#1 に準拠した RSA キーによる署名のみを検証できます 形式。この形式の公開鍵のヘッダーは-----BEGIN RSA PUBLIC KEY----- です。

次の shell スクリプトを使用して、有効な RSA 秘密キーと公開キーのペアを生成し、各キーを独自のテキストファイルに保存できます。

# Generate an RSA SSH key pair
# Save the key to a file called `rsa_key` when prompted
ssh-keygen -t rsa -m PEM -b 2048 -C "2048-bit RSA Key"
# Private Key
cat rsa_key > rsa.private.txt
# Public Key
ssh-keygen -f rsa_key.pub -e -m pem > rsa.public.txt
signature
検証対象の署名。
signatureScheme
string

任意。デフォルト: "pss"

パディング スキーム 署名が使用するAtlas は、次のスキームを使用する署名の検証をサポートしています。

ブール値trueの場合は、提供されたメッセージと公開鍵に対して署名が有効かどうかを示します。

BSONで署名付きのメッセージを受け取りました 。バイナリ 形式で、送信者の RSA 公開キーに対応する秘密キーでメッセージが署名されていることを確認する場合:

-----BEGIN RSA PUBLIC KEY-----
MIGJAoGBANWwSOx7ao7i/enxEz+rxGrOWhzWV57fjKhi4pnZx6a5S7wmlzsoU7X5
omld1tI9k2EYt0A2fx/agwhnVH2GAQlGf9Cb9jILhE9MaDnmfMepKXOI1kkxDIRT
JTuTHn4pvqS2CiOGTyhxlGSiszwUTKWSsrOBKt9rLQ9xYc+wqWZ5AgMBAAE=
-----END RSA PUBLIC KEY-----

この RSA キーを使用すると、次の関数を使用して、対応する秘密キーで署名されたメッセージを検証できます。

exports = function() {
const rsaPublicKey = context.values.get("rsaPublicKey");
const message = "MongoDB is great!"
const signature = BSON.Binary.fromBase64("SpfXcJwPbypArt+XuYQyuZqU52YCAY/sZj2kiuin2b6/RzyM4Ek3n3spOtqZJqxn1tfQavxIX4V+prbs74/pOaQkCLekl9Hoa1xOzSKcGoRd8U+n1+UBY3d3cyODGMpyr8Tim2HZAeLPE/D3Q36/K+jpgjvrJFXsJoAy5/PV7iEGV1fkzogmZtXWDcUUBBTTNPY4qZTzjNhL4RAFOc7Mfci+ojE/lLsNaumUVU1/Eky4vasmyjqunm+ULCcRmgWtGDMGHaQV4OXC2LMUe9GOqd3Q9ghCe0Vlhn25oTh8cXoGpd1Fr8wolNa//9dUqSM+QYDpZJXGLShX/Oa8mPwJZKDKHtqrS+2vE6S4dDWR7zKDza+DeovOeCih71QyuSYMXSz+WWGgfLzv/syhmUXP/mjqgLmJU6Kwg5htajDoylpzLC0BLGT4zDZEwBrq/AjwRs/EPjYdFgGCt1WCbbVlDyXvvH1ekDrzACzumhiMSZNNa+ZH3JmMJxTCQWDfiTeAfkauaaZHKIj2q2/QE7vuAhNcVPJ2YgpXnvnQHJpEZBc/Y3Q6JLxom6+cGC4P//9d++r2cwzXIkqD+wSGZVSVtpm5CLtWMRSK5FX2dv16bM+LE8ozoRvtMUDTrQ8SSSDGxyuYbvN9b2fYYPcWpCMchqOBXV6eZGoMldaHX3Qy5h8=")
const isValid = utils.crypto.verify("rsa", message, rsaPublicKey, signature, "pss");
return isValid; // true if the signature matches, else false
}
true

HMAC を生成する 提供された入力とシークレットからの署名。これは、署名されたリクエストを必要とするサードパーティの HTTP サービスと通信する場合に役立ちます。

utils.crypto.hmac(
input: string,
secret: string,
hash_function: string,
output_format: string
): string
Parameter
タイプ
説明
input
string
署名を生成する入力。
secret
string
署名の生成時に使用する秘密キー。
hash_function
string
署名の生成時に使用するハッシュ関数の名前。 次の関数がサポートされています: "sha1""sha256""sha512"
output_format
string
生成された署名の形式。 16 進 string の場合は"hex" 、Base64 string の場合は"base64"のいずれかになります。

入力の署名。形式はoutput_formatで指定されます。

次の関数は、基数 64 string として sha256 署名を生成します。

exports = function() {
const signature = utils.crypto.hmac(
"hello!",
"super-secret",
"sha256",
"base64"
)
return signature
}
"SUXd6PRMaTXXgBGaGsIHzaDWgTSa6C3D44lRGrvRak0="

指定されたハッシュ関数を使用して、指定された入力に対してハッシュ値を生成します。

utils.crypto.hash(
hash_function: string,
input: string | BSON.Binary
): BSON.Binary
Parameter
タイプ
説明
hash_function
string
ハッシュ関数の名前。 次の関数がサポートされています: "sha1""sha256""md5"
input
string または BSON.Binary
必須。 ハッシュ値を生成する入力。

指定されたハッシュ関数によって生成された入力のハッシュ値をエンコードするBSON.Binaryオブジェクト。

次の関数は、入力stringを sha256 でハッシュします。

exports = function() {
return utils.crypto.hash(
"sha256",
"hello!"
)
}
"zgYJL7lI2f+sfRo3bkBLJrdXW8wR7gWkYV/vT+w6MIs="

JSONグローバル モジュールは JSON メソッド を提供します 標準の JavaScript オブジェクトをシリアル化および逆シリアル化します。

方式
説明
シリアル化された JSON string を JavaScript オブジェクトに解析します。
JavaScript オブジェクトを JSON string にシリアル化します。

指定された JSON string を解析し、JavaScript オブジェクトに変換します。

JSON.parse(jsonString: string): object
Parameter
タイプ
説明
jsonString
標準のstringオブジェクトのJSON化された表現。

指定された JSON string から生成される標準 JavaScript オブジェクト。

次の関数は、シリアル化された JSON string を同等の JavaScript オブジェクトに変換します。

exports = function() {
const jsonString = `{
"answer": 42,
"submittedAt": "2020-03-02T16:50:24.475Z"
}`;
return JSON.parse(jsonString);
}
{
"answer": 42,
"submittedAt": "2020-03-02T16:50:24.475Z"
}

指定された JavaScript オブジェクトを JSON string に直列化します。

JSON.stringify(json: object): string
Parameter
タイプ
説明
object

提供された JavaScript オブジェクトの string 表現。

次の関数は、JavaScript オブジェクトを同等の JSON string に直列化します。

exports = function() {
const jsonObject = {
answer: 42,
submittedAt: new Date("2020-03-02T16:46:47.977Z")
};
return JSON.stringify(jsonObject);
}
"{\"answer\":42,\"submittedAt\":\"2020-03-02T16:46:47.977Z\"}"

EJSONグローバル モジュールはJSONと似ていますが、追加の拡張 JSON型情報を保持します。

EJSON は、標準 JSON のスーパーセットであり、 BSON で使用可能であるが JSON 仕様 に含まれていない型の追加のサポートを追加します

方式
説明
シリアル化された拡張 JSON string を JavaScript オブジェクトに解析します。
JavaScript オブジェクトを拡張 JSON string にシリアル化します。

指定されたEJSON string を解析し、JavaScript オブジェクトに変換します。

EJSON.parse(ejsonString: string): object
Parameter
タイプ
説明
ejsonString
string
拡張 JSON オブジェクトの string シリアル化表現。

指定された EJSON string の JavaScript オブジェクト表現。

次の関数は、シリアル化された EJSON string を同等の JavaScript オブジェクトに変換します。

exports = function() {
const ejsonString = `{
"answer": {
"$numberLong": "42"
},
"submittedAt": {
"$date": {
"$numberLong": "1583167607977"
}
}
}`;
return EJSON.parse(ejsonString);
}
{
"answer": {
"$numberLong": "42"
},
"submittedAt": {
"$date": {
"$numberLong": "1583167607977"
}
}
}

指定された JavaScript オブジェクトをEJSON string に直列化します。

EJSON.stringify(json: object): string
Parameter
タイプ
説明
object
ドキュメント
EJSONオブジェクト。 オブジェクトには BSON types が含まれる場合があります。

提供された EJSON オブジェクトの string 表現。

次の関数は、JavaScript オブジェクトを同等の EJSON string に直列化します。

exports = function() {
const jsonObject = {
answer: 42,
submittedAt: new Date("2020-03-02T16:46:47.977Z")
};
return EJSON.stringify(jsonObject);
}
"{\"answer\":{\"$numberLong\":\"42\"},\"submittedAt\":{\"$date\":{\"$numberLong\":\"1583167607977\"}}}"

BSONグローバル モジュールを使用すると、型指定された BSON オブジェクトを作成し、それらをさまざまなデータ形式とエンコーディング間で変換できます。

BSON (Binary JSON)は、MongoDB データベースが内部的に使用するデータ形式です。標準の JSON タイプのスーパーセットを使用して、ドキュメント データ構造のバイナリ表現をエンコードします。 詳しくは、 BSON 仕様 を参照してください。

タイプ
説明
ObjectId 値を表す
正規表現を表す
バイナリ データ構造を表す
他のすべての値よりも高い値を表します
他のすべての値よりも低い値を表します
32 ビットの符号付き整数を表します
64 ビットの符号付き整数を表す
64 ビット浮動小数点数を表します
128 ビット浮動小数点数を表します

BSON.ObjectId型は、12 バイトの MongoDB ObjectId識別子を表します。

ObjectIdをコードするBSON.ObjectIdオブジェクトを構築します

new BSON.ObjectId(id: string)
Parameter
タイプ
説明
id
string
任意。 12 バイトの string または 24 個の 16 文字の string。

指定されたObjectId string をエンコードするか、指定されていない場合は生成されたObjectId string をエンコードするBSON.ObjectIdオブジェクト。

const objectId = new BSON.ObjectId("5e58667d902d38559c802b13");
const generatedObjectId = new BSON.ObjectId();

BSON.BSONRegExp型は 正規表現を表します 。MongoDB コレクションに対して正規表現クエリを実行するには、 $regexクエリ演算子とともにBSON.BSONRegExpオブジェクトを使用できます。

正規表現stringから BSON.BSONRegExp オブジェクトを構築します。 オプションで、構成フラグを指定できます。

BSON.BSONRegExp(pattern: string, flags: string)
Parameter
タイプ
説明
pattern
string
正規表現 パターン。
flags
string

指定された正規表現パターンとフラグをエンコードするBSON.BSONRegExpオブジェクト。

const regex = BSON.BSONRegExp("the great", "ig");

BSON.Binary 型はバイナリでエンコードされたデータstringを表します。

16 進 string として表されたデータからBSON.Binaryオブジェクトを構築します。

BSON.Binary.fromHex(
hexString: string,
subType?: number
): BSON.Binary
Parameter
タイプ
説明
hexString
string
アラインされたバイト 16 進文字の string(0 -9 と AF)。
subType
integer
任意。 16進数stringにエンコードされるデータの型。 値は0 - 255の範囲内である必要があります。デフォルト値の0は汎用バイナリを表します。 サポートされているサブタイプの完全なリストについては、 BSON 仕様 を参照してください。

戻り値

指定された 16 進 string をエンコードするBSON.Binaryオブジェクト。

const binary = BSON.Binary.fromHex("54657374206d65737361676520706c656173652069676e6f7265=");

BSON.Binaryオブジェクトを 16 進 string に変換します。

BSON.Binary.prototype.toHex(): string

戻り値

提供されたBSON.Binaryオブジェクトの16進数文字列表現。

export = function() {
const binary = BSON.Binary.fromHex(
"54657374206d65737361676520706c656173652069676e6f7265="
);
const hexString = binary.toHex();
return hexString
}
"54657374206d65737361676520706c656173652069676e6f7265="

base64 string として表されたデータからBSON.Binaryオブジェクトを構築します。

BSON.Binary.fromBase64(
base64String: string,
subType?: number
): BSON.Binary
Parameter
タイプ
説明
base64String
string

base64 でエンコードされた文字の string。

注:基本的な64でエンコードされた string には、string の末尾に 1 つまたは 2 つの等価記号( = )を含める必要があります。これは「パディング」と呼ばれます。 BSON.Binary.fromBase64()は埋め込みなし文字列をサポートしていません。

subType
integer
任意。 16進数stringにエンコードされるデータの型。 値は0 - 255の範囲内である必要があります。デフォルト値の0は汎用バイナリを表します。 サポートされているサブタイプの完全なリストについては、 BSON 仕様 を参照してください。

戻り値

指定された base64 string をエンコードするBSON.Binaryオブジェクト。

const binary = BSON.Binary.fromBase64("VGVzdCBtZXNzYWdlIHBsZWFzZSBpZ25vcmU=");

BSON.Binaryオブジェクトを base64 string に変換します。

BSON.Binary.prototype.toBase64(): string

戻り値

BSON.Binary オブジェクトの base64 string表現。

const binary = BSON.Binary.fromBase64("VGVzdCBtZXNzYWdlIHBsZWFzZSBpZ25vcmU=");
const base64String = binary.toBase64();

BSON.Binaryオブジェクトを UTF-8 string に変換します。

BSON.Binary.prototype.text(): string

戻り値

提供された BSON.Binary オブジェクトの UTF-8 string表現。

const binary = BSON.Binary.fromBase64("VGVzdCBtZXNzYWdlIHBsZWFzZSBpZ25vcmU=");
const decodedString = binary.text();

BSON.MaxKey型は、他のすべての BSON 値よりも高い値を表します。

await collection.findOne({ date: { $lt: BSON.MaxKey } });

BSON.MinKey型は、他のすべての BSON 値よりも低い値を表します。

await collection.findOne({ date: { $gt: BSON.MinKey } });

BSON.Int32型は 32 ビットの符号付き整数を表します。

32 ビットの数値からBSON.Int32オブジェクトを構築します。

BSON.Int32(low32: number): BSON.Int32
Parameter
タイプ
説明
low32
数値
32 ビットの数。

指定された整数をエンコードするBSON.Int32オブジェクト。 引数が指定されていない場合は0を返します。

const int32 = BSON.Int32(42);

BSON.Long型は 64 ビットの符号付き整数を表します。

const long = BSON.Long(600206158, 342);
BSON.Long(low32: number, high32: number): BSON.Long

64 ビットLong整数の低 32 ビットと高 32 ビットを表す 2 つの 32 ビット整数からBSON.Longオブジェクトを構築します。

Parameter
タイプ
説明
low32
integer
任意。 long 整数の 32 の下位ビット。 これらのビットは、数値の最下位桁を表します。
high32
integer
任意。 long 整数の 32 高ビット。 これらのビットは、数値の最上位桁を表します。

戻り値

指定された整数をエンコードするBSON.Longオブジェクト。 引数が指定されていない場合は0を返します。

BSON.Long は次の式を使用してエンコードします。

(high32 * (2**32)) + low32

BSON.Double型は64ビット( 8バイト)の浮動点数を表します。 64ビットの 10 進値からBSON.Doubleオブジェクトを構築します。

重要

通貨にはDecimal128を使用

BSON.Double は浮動小数点の丸めエラーの対象となるため、小数値が正確に丸められる必要がある使用例には推奨されません。例: 金融データ。 このような場合は、代わりにBSON.Decimal 128を使用してください。

BSON.Double(double: number): BSON.Double
Parameter
タイプ
説明
double
数値
64 ビットの 10 進数値。

指定された double をエンコードするBSON.Doubleオブジェクト。 引数が指定されていない場合は0を返します。

const double = BSON.Double(1234.5678);

BSON.Decimal128型は 128 ビット(16 バイト)の浮動小数点数を表します。 このタイプは、10 進数値が完全に丸められる必要がある使用例を対象としています。例: 金融データ。

10 進数の string 表現からBSON.Decimal128を構築します。

BSON.Decimal128(decimalString: string): BSON.Decimal128
Parameter
タイプ
説明
decimalString
string
10進数を表す string。例: "1234.5678910123456"

指定された 10 進数値をエンコードするBSON.Decimal128

const double = BSON.Decimal128.fromString("1234.5678910123456");

戻る

Context