Docs Menu
Docs Home
/
MongoDB 매뉴얼
/ / / / / /

암호화된 필드가 있는 문서 쿼리

이 페이지의 내용

  • 개요
  • 시작하기 전
  • 절차
  • 동등성을 사용하여 암호화된 필드 쿼리하기
  • 범위를 사용하여 암호화된 필드 쿼리

이 가이드에서는 Queryable Encryption 지원 애플리케이션을 사용하여 암호화된 필드가 있는 문서를 검색하는 방법을 설명합니다.

이 가이드의 단계를 완료하면 애플리케이션을 사용하여 암호화된 필드의 데이터를 쿼리하고 인증된 사용자로 해당 필드를 해독할 수 있습니다.

계속하기 전에 암호화된 컬렉션을 만들고 문서를 삽입 하세요.

1

암호화됨 필드 에 동등성 쿼리를 활성화한 경우 해당 필드 에 지정된 값이 있는 문서를 조회 할 수 있습니다.

다음 예시 에서는 암호화됨 필드 에 대해 동등성 쿼리 를 수행하고 해독된 데이터를 출력합니다.

const findResult = await encryptedCollection.findOne({
"patientRecord.ssn": "987-65-4320",
});
console.log(findResult);
var ssnFilter = Builders<Patient>.Filter.Eq("patientRecord.ssn", patient.PatientRecord.Ssn);
var findResult = await encryptedCollection.Find(ssnFilter).ToCursorAsync();
Console.WriteLine(findResult.FirstOrDefault().ToJson());
var findResult PatientDocument
err = coll.FindOne(
context.TODO(),
bson.M{"patientRecord.ssn": "987-65-4320"},
).Decode(&findResult)
Patient findResult = collection.find(
new BsonDocument()
.append("patientRecord.ssn", new BsonString("987-65-4320")))
.first();
System.out.println(findResult);
const findResult = await encryptedCollection.findOne({
"patientRecord.ssn": "987-65-4320",
});
console.log(findResult);
find_result = encrypted_collection.find_one({
"patientRecord.ssn": "987-65-4320"
})
print(find_result)
2

암호화됨 필드 에서 범위 쿼리를 활성화한 경우 해당 필드 값이 지정한 범위 내에 있는 문서를 조회 할 수 있습니다.

다음 예시 에서는 암호화됨 필드 에 대해 범위 쿼리 를 수행하고 해독된 데이터를 출력합니다.

const findResult = await encryptedCollection.findOne({
"patientRecord.billAmount": { $gt: 1000, $lt: 2000 },
});
console.log(findResult);
var filter = Builders<Patient>.Filter.Gt("patientRecord.billAmount", 1000) &
Builders<Patient>.Filter.Lt("patientRecord.billAmount", 2000);
var findResult = encryptedCollection.Find(filter).FirstOrDefault();
Console.WriteLine(findResult.ToJson());
filter := bson.D{
{"patientRecord.billAmount", bson.D{
{"$gt", 1000},
{"$lt", 2000},
}},
}
var findResult PatientDocument
err = coll.FindOne(context.TODO(), filter).Decode(&findResult)
if err != nil {
log.Fatal(err)
}
if err != nil {
fmt.Print("Unable to find the document\n")
} else {
output, _ := json.MarshalIndent(findResult, "", " ")
fmt.Printf("%s\n", output)
}
Document filter = new Document("patientRecord.billAmount",
new Document("$gt", 1000).append("$lt", 2000));
Patient findResult = collection.find(filter).first();
System.out.println(findResult);
const findResult = await encryptedCollection.findOne({
"patientRecord.billAmount": { $gt: 1000, $lt: 2000 },
});
console.log(findResult);
query = {"patientRecord.billAmount": {"$gt": 1000, "$lt": 2000}}
find_result = encrypted_collection.find_one(query)
print(find_result)

앞의 코드 예제의 출력은 다음과 유사해야 합니다.

{
"_id": {
"$oid": "648b384a722cb9b8392df76a"
},
"name": "Jon Doe",
"record": {
"ssn": "987-65-4320",
"billing": {
"type": "Visa",
"number": "4111111111111111"
},
"billAmount": 1500
},
"__safeContent__": [
{
"$binary": {
"base64": "L1NsYItk0Sg+oL66DBj6IYHbX7tveANQyrU2cvMzD9Y=",
"subType": "00"
}
}
]
}

경고

__safeContent__ 필드를 수정하지 마세요.

__safeContent__ 필드는 Queryable Encryption에 필수적입니다. 이 필드의 내용은 수정하지 마세요.

돌아가기

컬렉션 생성