可查询加密字段:范围过滤与排序的秘密
介绍 MongoDB 6.0 的 Queryable Encryption 功能,讲解如何对敏感字段(如邮箱、身份证号)进行确定性加密,同时仍然支持精确匹配、范围查询和排序操作。 · 难度:入门 · +10XP
可查询加密字段:范围过滤与排序的秘密
传统加密方式会使数据库失去对字段内容的索引能力。MongoDB 的 Queryable Encryption 通过基于查找的加密结构,允许服务器在不知道明文内容的情况下执行相等、范围甚至排序操作。本教程将演示如何配置加密 schema,创建加密键集合,并实际执行对加密字段的 $gte 和 $lt 查询。你还能了解到加密字段对聚合管道的影响以及性能开销。
const client = new MongoClient(uri, {
autoEncryption: {
keyVaultNamespace: 'encryption.__keyVault',
kmsProviders: { local: { key: '...' } },
schemaMap: {
'medical.patients': {
bsonType: 'object',
properties: {
ssn: { encrypt: { bsonType: 'string', algorithm: 'AEAD_AES_256_CBC_HMAC_SHA_512-Deterministic' } }
}
}
}
}
});
db.patients.find({ ssn: { $gte: '123-45-6789', $lt: '123-46-0000' } });