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 トークンの読み取りと書き込みのメソッド。 | |
ハッシュや署名などの暗号化アルゴリズムを実装するメソッド。 | |
JSON の string とオブジェクト表現を変換するメソッド データ。 | |
拡張 JSONデータの string 表現とオブジェクト表現の間で変換するメソッド。 | |
バイナリ JSON を作成するメソッド オブジェクトと の間でさまざまな BSON データ型とエンコーディングの間で変換が行われます。 |
JSON Web Tokens (utils.jwt
)
JSON Web Token の作成と読み取りが可能utils.jwt
インターフェースを持つ。
方式 | 説明 |
---|---|
指定された payload 、signingMethod 、secret に対してエンコードされたJSON web token stringを生成します。 | |
JSON web token stringの payload を復号化します。 |
utils.jwt.encode()
指定された signingMethod
と secret
に基づいて、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署名メソッドをサポートしています。
|
payload | オブジェクト | トークンのクレームと追加の関連データを指定する JSON オブジェクト。 |
secret | string | Atlas がトークンに署名するために使用する秘密の string。 string の値は、使用する署名方法によって異なります。
|
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"
uts.jwt.decode()
提供された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 の値は、使用する署名方法によって異なります。
|
returnHeader | ブール値 | true の場合、 のJSON web token JSON ヘッダー を返します デコードされたペイロードに加えて、。 |
acceptedSigningMethods | string[] | 任意。 使用された署名方法の配列。 たとえば、 ["PS256", "HS256"] 。 この引数は、 既知のJSON web token のセキュリティ脆弱性 を防ぐために含める必要があります。 。 |
戻り値
returnHeader
がfalse
の場合、 はデコードされた 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
)
utils.crypto
インターフェースの暗号化アルゴリズムを使用して、データを暗号化、復号化、署名、検証できます。
方式 | 説明 |
---|---|
特定の暗号化方法とキーを使用して、指定されたテキスト string から暗号化されたテキスト string を生成します。 | |
指定されたテキスト string を、特定の暗号化方法とキーを使用して復号化します。 | |
秘密キーを使用して、指定されたメッセージに対して暗号化された一意の署名を生成します。 | |
指定されたメッセージと公開鍵に対して署名が有効であることを確認します。 | |
HMAC を生成する 特定の入力とシークレットからの署名。 | |
指定された入力とハッシュ関数のハッシュ値を生成します。 |
uts.crypto.encrypt()
指定された暗号化方法とキーを使用して、指定されたテキストから暗号化されたテキスト string を生成します。
utils.crypto.encrypt( encryptionType: string, message: string, key: string ): BSON.Binary
Parameter | タイプ | 説明 |
---|---|---|
encryptionType | string | メッセージを暗号化する暗号化のタイプ。 次の暗号化のタイプがサポートされています。
|
message | string | 暗号化するテキスト string。 |
key | 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"
uts.crypto.decrypt()
指定された暗号化タイプとキーを使用して、指定されたテキスト string を復号化します。 暗号化のタイプとキーの両方が暗号化に使用されたものと同じ場合は、暗号化されていない元のテキストが返されます。
utils.crypto.decrypt( encryptionType: string, encryptedMessage: BSON.Binary, key: string ): BSON.Binary
Parameter | タイプ | 説明 |
---|---|---|
encryptionType | string | 提供されたテキストを暗号化するために使用された暗号化のタイプ。 次の暗号化のタイプがサポートされています。
|
encryptedMessage | 復号化対象の暗号化されたテキスト string をエンコードする BSON バイナリ。 | |
key | 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!"
uts.crypto.sign()
秘密キーを使用して、メッセージに暗号化された一意の署名を生成します。 署名は、対応する公開キーで検証され、署名者が秘密キーにアクセスできること、およびメッセージの内容が署名以降に変更されていないことを確認できます。
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 に準拠した秘密キーでのみメッセージに署名できます 形式。この形式の秘密キーのヘッダーは 次の shell スクリプトを使用して、有効な RSA 秘密キーと公開キーのペアを生成し、各キーを独自のテキストファイルに保存できます。
| ||||||||
signatureScheme | string | 任意。デフォルト: パディング スキーム 署名が使用する必要があるドキュメント。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="
uts.crypto.verify()
指定された署名が指定されたメッセージと公開鍵に対して有効であることを確認します。
署名が有効な場合は、署名者が対応する秘密キーにアクセスできること、およびメッセージの内容が署名以降に変更されていないことが保証されます。
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 キーによる署名のみを検証できます 形式。この形式の公開鍵のヘッダーは 次の shell スクリプトを使用して、有効な RSA 秘密キーと公開キーのペアを生成し、各キーを独自のテキストファイルに保存できます。
| ||||||||
signature | 検証対象の署名。 | |||||||||
signatureScheme | string | 任意。デフォルト: パディング スキーム 署名が使用する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
uts.crypto.hmac()
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="
uts.crypto.hash()
指定されたハッシュ関数を使用して、指定された入力に対してハッシュ値を生成します。
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 メソッド を提供します 標準の JavaScript オブジェクトをシリアル化および逆シリアル化します。
方式 | 説明 |
---|---|
シリアル化された JSON string を JavaScript オブジェクトに解析します。 | |
JavaScript オブジェクトを JSON string にシリアル化します。 |
JSON.parse()
指定された 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" }
JSON.stringify()
指定された 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)
EJSON
グローバル モジュールはJSONと似ていますが、追加の拡張 JSON型情報を保持します。
EJSON は、標準 JSON のスーパーセットであり、 BSON で使用可能であるが JSON 仕様 に含まれていない型の追加のサポートを追加します 。
方式 | 説明 |
---|---|
シリアル化された拡張 JSON string を JavaScript オブジェクトに解析します。 | |
JavaScript オブジェクトを拡張 JSON string にシリアル化します。 |
EJSON.parse()
指定された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" } } }
EJSON.stringify()
指定された 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 (バイナリ JSON)
BSON
グローバル モジュールを使用すると、型指定された BSON オブジェクトを作成し、それらをさまざまなデータ形式とエンコーディング間で変換できます。
BSON (Binary JSON)は、MongoDB データベースが内部的に使用するデータ形式です。標準の JSON タイプのスーパーセットを使用して、ドキュメント データ構造のバイナリ表現をエンコードします。 詳しくは、 BSON 仕様 を参照してください。
タイプ | 説明 |
---|---|
ObjectId 値を表す | |
正規表現を表す | |
バイナリ データ構造を表す | |
他のすべての値よりも高い値を表します | |
他のすべての値よりも低い値を表します | |
32 ビットの符号付き整数を表します | |
64 ビットの符号付き整数を表す | |
64 ビット浮動小数点数を表します | |
128 ビット浮動小数点数を表します |
BSON.ObjectId
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
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
BSON.Binary
型はバイナリでエンコードされたデータstringを表します。
BSON.Binary.fromHex()
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.prototype.toHex()
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="
BSON.Binary.fromBase 64 ()
base64 string として表されたデータからBSON.Binary
オブジェクトを構築します。
BSON.Binary.fromBase64( base64String: string, subType?: number ): BSON.Binary
Parameter | タイプ | 説明 |
---|---|---|
base64String | string | base64 でエンコードされた文字の string。 注:基本的な64でエンコードされた string には、string の末尾に 1 つまたは 2 つの等価記号( |
subType | integer | 任意。 16進数stringにエンコードされるデータの型。 値は0 - 255の範囲内である必要があります。デフォルト値の 0 は汎用バイナリを表します。 サポートされているサブタイプの完全なリストについては、 BSON 仕様 を参照してください。 |
戻り値
指定された base64 string をエンコードするBSON.Binary
オブジェクト。
const binary = BSON.Binary.fromBase64("VGVzdCBtZXNzYWdlIHBsZWFzZSBpZ25vcmU=");
BSON.Binary.prototype.toBase 64 ()
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.prototype.text()
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.MaxKey
型は、他のすべての BSON 値よりも高い値を表します。
await collection.findOne({ date: { $lt: BSON.MaxKey } });
BSON.MinKey
BSON.MinKey
型は、他のすべての BSON 値よりも低い値を表します。
await collection.findOne({ date: { $gt: BSON.MinKey } });
BSON.Int32
BSON.Int32
型は 32 ビットの符号付き整数を表します。
BSON.Int 32 ()
32 ビットの数値からBSON.Int32
オブジェクトを構築します。
BSON.Int32(low32: number): BSON.Int32
Parameter | タイプ | 説明 |
---|---|---|
low32 | 数値 | 32 ビットの数。 |
戻り値
指定された整数をエンコードするBSON.Int32
オブジェクト。 引数が指定されていない場合は0
を返します。
const int32 = BSON.Int32(42);
BSON.Long
BSON.Long
型は 64 ビットの符号付き整数を表します。
const long = BSON.Long(600206158, 342);
BSON.Long(低32 、高32 )
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
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
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");