Docs Menu
Docs Home
/
MongoDB Atlas
/ / /

Global Modules

이 페이지의 내용

  • JSON Web Token(utils.jwt)
  • utils.jwt.encode()
  • utils.jwt.decode()
  • 암호화(utils.crypto)
  • utils.crypto.encrypt()
  • utils.crypto.decrypt()
  • utils.crypto.sign()
  • utils.crypto.verify()
  • utils.crypto.hmac()
  • utils.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.Int32()
  • BSON.Long
  • BSON.Double
  • BSON.Decimal128

모든 함수 는 일반적인 데이터 변환, 인코딩 및 처리 작업을 지원하는 내장 글로벌 모듈에 액세스할 수 있습니다. 각 모듈에 특정한 글로벌 변수를 통해 함수 소스 코드의 모듈에 액세스할 수 있습니다.

이러한 글로벌 모듈은 Node.js 내장 모듈과 동일 하지 않습니다 . 가져오는 방법 등 지원되는 Node.js 모듈에 대한 자세한 내용은 기본 제공 모듈 지원을 참조하세요.

모듈
설명
JSON Web Token
JSON Web Token을 읽고 쓰는 메서드.
해시 및 서명과 같은 암호화 알고리즘을 구현하는 메서드입니다.
JSON 의 문자열과 객체 표현을 변환하는 메서드 데이터.
확장 JSON string 데이터의 과 객체 표현 간에 변환하는 메서드입니다.
바이너리 JSON 을 생성하는 메서드 다양한 BSON 데이터 유형과 인코딩 간에 변환할 수 있습니다.

JSON Web Token 을 생성하고 읽을 수 utils.jwt 있습니다. 인터페이스를 사용합니다.

메서드
설명
지정된 payload, signingMethodsecret 에 대해 인코딩된 JSON Web Token 문자열을 생성합니다.
JSON Web Token 문자열의 payload 를 디코딩합니다.

지정된 signingMethodsecret 를 기반으로 payload 에 대해 인코딩된 JSON Web Token 문자열을 생성합니다.

utils.jwt.encode(
signingMethod: string,
payload: object,
secret: string,
customHeaderFields: object
): string
Parameter
유형
설명
signingMethod
문자열

JWT를 인코딩할 때 사용할 암호화 알고리즘 입니다. Atlas 는 다음과 같은 JWT 서명 방법을 지원합니다.

  • "HS256": SHA-256를 사용하는 HMAC

  • "HS384": SHA-384를 사용하는 HMAC

  • "HS512": SHA-512를 사용하는 HMAC

  • "RS256": RSASSA-PKCS1-v1_5 , SHA-256사용

  • "RS384": RSASSA-PKCS1-v1_5 , SHA-384사용

  • "RS512": RSASSA-PKCS1-v1_5 , SHA-512사용

  • "ES256": P-256 및 SHA-256를 사용하는 ECDSA

  • "ES384": P-384 및 SHA-384를 사용하는 ECDSA

  • "ES512": P-512 및 SHA-512를 사용하는 ECDSA

  • "PS256": SHA-256 및 MGF1 및 SHA-256를 사용하는 RSASSA-PSS

  • "PS384": SHA-384 및 MGF1 및 SHA-384를 사용하는 RSASSA-PSS

  • "PS512": SHA-512 및 MGF1 및 SHA-512를 사용하는 RSASSA-PSS

payload
객체
토큰의 클레임 및 추가 관련 데이터를 지정하는 JSON 객체입니다.
secret
문자열

Atlas 가 토큰에 서명하는 데 사용하는 시크릿 문자열입니다. 문자열 값은 사용하는 서명 방법에 따라 달라집니다.

    • "HS256", "HS384""HS512": 임의의 문자열입니다.

    • "RS256", "RS384""RS512": PKCS#8 형식의 RSA-SHA 비공개 키입니다.

    • "PS256", "PS384""PS512": PKCS#8 형식의 RSA-PSS 비공개 키입니다.

    • "ES256", "ES384""ES512":ECDSA PKCS# 형식의 비공개8 키입니다.

customHeaderFields
객체

제공된 payload 에 대해 인코딩된 JSON Web Token 문자열을 반환합니다.

다음 JSON web token 클레임 객체를 가정해 보겠습니다.

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

utils.jwt.encode() 을(를) 호출하여 클레임 객체를 JSON web token 문자열로 인코딩할 수 있습니다. 다음 함수는 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 문자열의 payload 를 디코딩합니다. key 값은 JSON web token 문자열을 인코딩하는 데 사용된 시크릿 값과 일치해야 합니다.

utils.jwt.decode(
jwtString: string,
key: string,
returnHeader: boolean
): object
Parameter
유형
설명
jwtString
문자열
비밀 값으로 서명된 클레임 집합을 인코딩하는 JSON Web Token 문자열입니다.
key
문자열

Atlas 가 토큰 서명을 확인하는 데 사용하는 문자열입니다. 문자열 값은 사용하는 서명 방법에 따라 달라집니다.

  • "HS256", "HS384""HS512": 토큰에 서명하는 데 사용된 임의의 문자열입니다.

  • "RS256", "RS384""RS512": 토큰에 서명하는 데 사용된 비공개 키에 해당하는 RSA-SHA 공개 키입니다.

  • "PS256", "PS384""PS512": 토큰에 서명하는 데 사용된 비공개 키에 해당하는 RSA-SHA 공개 키입니다.

  • "ES256", "ES384""ES512":ECDSA 토큰 서명에 사용된 비공개 키에 해당하는 공개 키입니다.

returnHeader
부울
true 경우 JSON 웹 토큰의 JOSE 헤더 를 반환합니다. 디코딩된 페이로드에 추가합니다.
acceptedSigningMethods
string[]
선택 사항. 허용되는 서명 메서드의 배열입니다. 예: ["PS256", "HS256"]. 알려진 JSON 웹 토큰 보안 취약점 을 방지하려면 이 인수를 포함해야 합니다. .

returnHeaderfalse 인 경우, 디코딩된 EJSON 페이로드를 반환합니다.

이 인 경우 JOSE 헤더 returnHeader true가 포함된 객체를 반환합니다. 필드에 header 입력하고 필드에 디코딩된 EJSON 페이로드를 입력합니다.payload

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

서명된 다음 JSON web token 문자열을 가정해 보겠습니다.

"eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvZSBTY2htb2UiLCJpYXQiOjE1NjU3MjEyMjMxODd9.-QL15ldu2BYuJokNWT6YRiwZQIiIpvq6Kyv-C6qslNdNiUVxo8zqLJZ1iEkNf2yZKMIrQuMCtIC1tzd2H31AxA"

JSON web token는 시크릿 값 "SuperSecret" 과 함께 HS512 서명 메서드를 사용하여 서명되었습니다. JWT의 클레임 객체 utils.jwt.decode() 를 디코딩할 수 있습니다. 다음 함수는 JSON web token 문자열을 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 인터페이스에서 암호화 알고리즘을 사용하여 데이터를 암호화, 해독, 서명 및 확인할 수 있습니다.

메서드
설명
특정 암호화 방법과 키를 사용하여 주어진 텍스트 문자열에서 암호화된 텍스트 문자열을 생성합니다.
특정 암호화 방법과 키를 사용하여 제공된 텍스트 문자열을 해독합니다.
개인 키를 사용하여 지정된 메시지에 대한 암호화적으로 고유한 서명을 생성합니다.
서명이 지정된 메시지 및 공개 키에 유효한지 확인합니다.
HMAC 를 생성합니다. 지정된 입력 및 시크릿에서 서명합니다.
주어진 입력 및 해시 함수에 대한 해시 값을 생성합니다.

지정된 암호화 방법과 키를 사용하여 제공된 텍스트에서 암호화된 텍스트 문자열을 생성합니다.

utils.crypto.encrypt(
encryptionType: string,
message: string,
key: string
): BSON.Binary
Parameter
유형
설명
encryptionType
문자열

메시지를 암호화할 암호화 유형입니다. 지원되는 암호화 유형은 다음과 같습니다.

message
문자열
암호화하려는 텍스트 문자열입니다.
key
문자열

텍스트를 암호화하는 데 사용되는 암호화 키입니다. 사용해야 하는 키는 암호화 방법에 따라 다릅니다.

  • AES: 16-byte, 24-byte 또는 32-byte 임의 문자열

지정된 암호화 유형 및 키로 암호화된 텍스트 이 BSON 포함된 바이너리 객체입니다. string

다음 32바이트 AES 암호화 키를 포함하는 aesEncryptionKey 라는 을 정의했다고 가정해 보겠습니다.

"603082712271C525E087BD999A4E0738"

이 AES 키를 사용하면 다음 함수를 사용하여 메시지를 base64 문자열로 암호화할 수 있습니다.

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"

지정된 암호화 유형 및 키를 사용하여 제공된 텍스트 문자열을 해독합니다. 암호화 유형과 키가 암호화에 사용된 것과 동일한 경우 암호화되지 않은 원본 텍스트가 반환됩니다.

utils.crypto.decrypt(
encryptionType: string,
encryptedMessage: BSON.Binary,
key: string
): BSON.Binary
Parameter
유형
설명
encryptionType
문자열

제공된 텍스트를 암호화하는 데 사용된 암호화 유형입니다. 지원되는 암호화 유형은 다음과 같습니다.

encryptedMessage
해독하려는 암호화된 텍스트 문자열을 인코딩하는 BSON Binary입니다.
key
문자열

텍스트를 해독하는 데 사용되는 암호화 키입니다. 사용해야 하는 키는 암호화 유형에 따라 다릅니다.

  • AES: 16-byte, 24-byte 또는 32-byte 임의 문자열

해독된 메시지가 포함된 BSON 바이너리 객체입니다.

제공된 암호화된 메시지가 지정된 방법 및 키로 암호화된 경우 해독된 메시지는 원본 메시지와 동일합니다.

다음 32바이트 AES 암호화 키 를 포함하는 aesEncryptionKey 값을 정의했다고 가정해 보겠습니다.

"603082712271C525E087BD999A4E0738"

이 AES 키를 사용하면 다음 함수를 사용하여 동일한 키로 암호화된 모든 base64 문자열을 해독할 수 있습니다.

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
문자열

개인/공개 키 쌍을 생성하는 데 사용된 암호화 유형입니다. 지원되는 암호화 유형은 다음과 같습니다.

message
문자열
서명하려는 텍스트 문자열입니다.
privateKey
문자열

지정된 암호화 유형으로 생성된 비공개 키입니다.

중요! 모든 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
문자열

선택 사항. 기본값: "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
문자열

개인/공개 키 쌍을 생성하는 데 사용된 암호화 유형입니다. 지원되는 암호화 유형은 다음과 같습니다.

message
문자열
서명을 확인하려는 텍스트 문자열입니다. 서명이 유효한 경우 서명된 정확한 메시지입니다.
publicKey
문자열

서명을 확인하려는 공개 키입니다. 서명이 유효한 경우 이는 메시지에 서명하는 데 사용된 개인 키의 해당 공개 키입니다.

중요! 모든 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
문자열

선택 사항. 기본값: "pss"

패딩 체계 서명이 사용하는 Atlas 는 다음 체계를 사용하는 서명 확인을 지원합니다.

true 인 경우 서명이 제공된 메시지 및 공개 키에 대해 유효한지 여부를 나타내는 부울입니다.

BSON.Binary 형식의 서명이 포함된 메시지를 받았으며, 해당 메시지가 발신자의 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
문자열
서명을 생성하려는 입력입니다.
secret
문자열
서명을 생성할 때 사용할 시크릿 키입니다.
hash_function
문자열
서명을 생성할 때 사용할 해싱 함수의 이름입니다. 지원되는 함수는 "sha1", "sha256", "sha512" 입니다.
output_format
문자열
생성된 서명의 형식입니다. 16진수 문자열의 경우 "hex" , Base64 문자열의 경우 "base64" 중 하나일 수 있습니다.

output_format 으로 지정된 형식의 입력 서명입니다.

다음 함수는 sha256 서명을 기본 64 문자열로 생성합니다.

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
문자열
해싱 함수의 이름입니다. 지원되는 함수는 "sha1", "sha256", "md5" 입니다.
input
문자열 또는 BSON.Binary
필수입니다. 해시 값을 생성하려는 입력입니다.

지정된 해싱 함수에서 생성된 제공된 입력에 대한 해시 값을 인코딩하는 BSON.Binary 객체입니다.

다음 함수는 sha256을 사용하여 입력 문자열을 해시합니다.

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

JSON 글로벌 모듈은 JSON 메서드 를 제공합니다. 표준 JavaScript 객체를 직렬화 및 역직렬화합니다.

메서드
설명
직렬화된 JSON 문자열을 JavaScript 객체로 구문 분석합니다.
JavaScript 객체를 JSON 문자열로 직렬화합니다.

제공된 JSON 문자열을 구문 분석하여 JavaScript 객체로 변환합니다.

JSON.parse(jsonString: string): object
Parameter
유형
설명
jsonString
표준 JSON 객체의 직렬화된 문자열 표현입니다.

제공된 JSON 문자열에서 생성된 표준 JavaScript 객체입니다.

다음 함수는 직렬화된 JSON 문자열을 이에 상응하는 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 문자열로 직렬화합니다.

JSON.stringify(json: object): string
Parameter
유형
설명
object

제공된 JavaScript 객체의 문자열 표현입니다.

다음 함수는 JavaScript 객체를 동등한 JSON 문자열로 직렬화합니다.

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 문자열을 JavaScript 객체로 구문 분석합니다.
JavaScript 객체를 ExtendedJSON 문자열로 직렬화합니다.

제공된 EJSON string 을 구문 분석하여 JavaScript 객체로 변환합니다.

EJSON.parse(ejsonString: string): object
Parameter
유형
설명
ejsonString
문자열
확장 JSON 객체의 직렬화된 문자열 표현입니다.

제공된 EJSON 문자열의 JavaScript 객체 표현입니다.

다음 함수는 직렬화된 EJSON 문자열을 이에 상응하는 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 객체의 문자열 표현입니다.

다음 함수는 JavaScript 객체를 동등한 EJSON 문자열로 직렬화합니다.

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 또는 바이너리 JSON은 MongoDB 데이터베이스에서 내부적으로 사용되는 데이터 형식입니다. 표준 JSON 유형의 상위 집합을 사용하여 문서 데이터 구조의 이진 표현을 인코딩합니다. 자세한 내용은 BSON 사양을 참조하세요.

유형
설명
ObjectId 값을 나타냅니다.
정규 표현식을 나타냅니다.
이진 데이터 구조를 나타냅니다.
다른 모든 값보다 높게 비교되는 값을 나타냅니다.
다른 모든 값보다 낮게 비교되는 값을 나타냅니다.
부호 있는 32비트 정수를 나타냅니다.
부호 있는 64비트 정수를 나타냅니다.
64비트 부동 소수점 숫자를 나타냅니다.
128비트 부동 소수점 숫자를 나타냅니다.

BSON.ObjectId 유형은 12바이트 MongoDB ObjectId 식별자를 나타냅니다.

ObjectId를 인코딩하는 BSON.ObjectId 객체를 생성합니다.

new BSON.ObjectId(id: string)
Parameter
유형
설명
id
문자열
선택 사항. 12바이트 문자열 또는 24자의 16진수 문자열입니다.

지정된 ObjectId string 또는 지정된 문자열이 없는 경우 생성된 ObjectId string 을 인코딩하는 BSON.ObjectId 객체입니다.

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

BSON.BSONRegExp 유형은 정규 표현식 을 나타냅니다. . BSON.BSONRegExp 객체를 $regex 쿼리 연산자와 함께 사용하여 MongoDB 컬렉션에서 정규 표현식 쿼리를 수행할 수 있습니다.

정규 표현식 문자열에서 BSON.BSONRegExp 객체를 생성합니다. 선택적으로 구성 플래그를 지정할 수 있습니다.

BSON.BSONRegExp(pattern: string, flags: string)
Parameter
유형
설명
pattern
문자열
flags
문자열
선택 사항. 하나 이상의 정규 표현식 플래그입니다.

제공된 정규 표현식 패턴과 플래그를 인코딩하는 BSON.BSONRegExp 객체입니다.

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

BSON.Binary 유형은 바이너리 인코딩 데이터 문자열을 나타냅니다.

16진수 문자열로 표시된 데이터에서 BSON.Binary 객체를 생성합니다.

BSON.Binary.fromHex(
hexString: string,
subType?: number
): BSON.Binary
Parameter
유형
설명
hexString
문자열
바이트 정렬 string 16진수 (0-9 및 AF).
subType
integer
선택 사항. 16진수 string 로 인코딩된 데이터 유형입니다. 값은 0-255 범위에 있어야 하며, 여기서 0 기본값은 일반 바이너리를 나타냅니다. 지원되는 하위 유형의 전체 목록은 BSON 사양을 참조하세요.

반환

제공된 16진수 문자열을 인코딩하는 BSON.Binary 객체입니다.

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

BSON.Binary 객체를 16진수 문자열로 변환합니다.

BSON.Binary.prototype.toHex(): string

반환

제공된 BSON.Binary 객체의 16진수 문자열 표현입니다.

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

base64 문자열로 표시되는 데이터에서 BSON.Binary 객체를 생성합니다.

BSON.Binary.fromBase64(
base64String: string,
subType?: number
): BSON.Binary
Parameter
유형
설명
base64String
문자열

base64로 인코딩된 문자의 문자열입니다.

참고: 기본64인코딩된 문자열은 문자열 끝에 '패딩'이라고 하는 하나 또는 두 개의 등호(=)를 포함해야 합니다. BSON.Binary.fromBase64() 는 패딩되지 않은 문자열을 지원 하지 않습니다.

subType
integer
선택 사항. 16진수 string 로 인코딩된 데이터 유형입니다. 값은 0-255 범위에 있어야 하며, 여기서 0 기본값은 일반 바이너리를 나타냅니다. 지원되는 하위 유형의 전체 목록은 BSON 사양을 참조하세요.

반환

제공된 base64 문자열을 인코딩하는 BSON.Binary 객체입니다.

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

BSON.Binary 객체를 base64 문자열로 변환합니다.

BSON.Binary.prototype.toBase64(): string

반환

BSON.Binary 객체의 base64 문자열 표현입니다.

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

BSON.Binary 객체를 UTF-8 문자열로 변환합니다.

BSON.Binary.prototype.text(): string

반환

제공된 BSON.Binary 객체의 UTF-8 문자열 표현입니다.

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비트를 나타내는 두 개의 32비트 정수로 BSON.Long 객체를 생성합니다.

Parameter
유형
설명
low32
integer
선택 사항. 긴 정수의 하위 32비트입니다. 이 비트는 숫자의 최하위 자릿수를 나타냅니다.
high32
integer
선택 사항. 긴 정수의 상위 32비트입니다. 이 비트는 숫자의 최상위 자릿수를 나타냅니다.

반환

지정된 정수를 인코딩하는 BSON.Long 객체입니다. 인수를 제공하지 않으면 0 을(를) 반환합니다.

BSON.Long 다음 공식을 사용하여 인코딩합니다.

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

BSON.Double 유형은 64비트(8바이트) 부동 점 숫자를 나타냅니다. 64비트 10진수 값에서 BSON.Double 객체 를 생성합니다.

중요

돈을 위해 Decimal128 사용

BSON.Double 부동 소수점 반올림 오류가 발생할 수 있으므로 소수점 값이 정확히 반올림되어야 하는 사용 사례에는 권장되지 않습니다. 금융 데이터. 이러한 경우에는 대신 BSON.Decimal128 을(를) 사용하세요.

BSON.Double(double: number): BSON.Double
Parameter
유형
설명
double
숫자
64비트 10진수 값입니다.

지정된 더블을 인코딩하는 BSON.Double 객체입니다. 인수를 제공하지 않으면 0 을(를) 반환합니다.

const double = BSON.Double(1234.5678);

BSON.Decimal128 유형은 128비트(16바이트) 부동 소수점 숫자를 나타냅니다. 이 유형은 소수점 값이 정확히 반올림되어야 하는 사용 사례에 사용됩니다. 금융 데이터.

10진수의 문자열 표현에서 BSON.Decimal128 를 생성합니다.

BSON.Decimal128(decimalString: string): BSON.Decimal128
Parameter
유형
설명
decimalString
문자열
10진수를 나타내는 문자열(예: "1234.5678910123456".

제공된 10진수 값을 인코딩하는 BSON.Decimal128 입니다.

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

돌아가기

Context