Docs Menu
Docs Home
/
Atlas
/ / /

Global Modules

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

Tip

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

Module
説明

JSON Web トークンの読み取りと書き込みのメソッド。

ハッシュや署名などの暗号化アルゴリズムを実装するメソッド。

JSONデータの string とオブジェクト表現を変換するメソッド。

拡張 JSONデータの string 表現とオブジェクト表現の間で変換するメソッド。

バイナリJSONオブジェクトを作成し、さまざまなBSONデータ型とエンコーディング間で変換するメソッド。

utils.jwt インターフェースを使用してJSON Web トークンを作成および読み取ります。

方式
説明

指定された 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

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

  • "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": ランダムなstring 。

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

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

customHeaderFields

オブジェクト

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

指定された 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": トークンに署名するために使用されたランダムなstring 。

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

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

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

returnHeader

ブール値

trueの場合、デコードされたペイロードに加えて、 JSON web token の JSON web token の JSON ヘッダーを返します。

acceptedSigningMethods

string[]

任意。使用された署名方法の配列。例、["PS256", "HS256"]。この引数は、既知のJSON web トークンのセキュリティの脆弱性 を防ぐために含める必要があります。

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

returnHeadertrue の場合、 は、 フィールドに 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 を、特定の暗号化方法とキーを使用して復号化します。

秘密キーを使用して、指定されたメッセージに対して暗号化された一意の署名を生成します。

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

指定された入力とハッシュ関数のハッシュ値を生成します。

指定された暗号化方法とキーを使用して、指定されたテキストから暗号化されたテキスト 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

指定された暗号化タイプとキーで暗号化されたテキスト 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バイトのランダムstring

復号化されたメッセージを含む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 グローバル モジュールは、標準のJavaScriptオブジェクトをシリアル化および逆シリアル化するためのJSONメソッドを提供します。

方式
説明

シリアル化された 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

提供された 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 は、BSONで使用可能ですがJSON仕様に含まれていない型の追加サポートを追加する標準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

任意。1 つ以上の正規式フラグ。

指定された正規表現パターンとフラグをエンコードする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進数文字列にエンコードされるデータの型。 値は 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進数文字列にエンコードされるデータの型。 値は 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