mongodb查询过程

mongo的查询过程,默认是primary模式,也就是从主节点查询。当然也有其他模式。主从模式的有点就是,你总是能读到最新的数据,缺点在于,读写位于同一个节点,负载比较高。
mongo的查询几种模式:

Primary:默认,所有的均从primary的replica set读
primaryPreferred:大多数情况下从primary的replica set读,当其不可用时,从其secondary members读
secondary:所有的读操作均从secondary member读取
SecondaryPreferred:大部分情况下从secondary member读取,当secondary
member不可用时,从primary读取 nearest:从最小网络延时的replica set读取

### MongoDB 查询加密方法及实现方式 MongoDB 提供了一种称为 **Queryable Encryption** 的技术来支持查询加密的功能[^3]。这种技术允许客户端在不解密的情况下对加密的数据执行复杂的查询操作,从而增强了数据的安全性和隐私保护。 以下是关于 MongoDB 查询加密的具体方法及其实现方式: #### 1. 可查询加密的工作原理 可查询加密的核心在于能够在加密后的数据上运行查询逻辑而不需要解密原始数据。这通过一种特殊的加密算法实现,该算法能够保留某些明文属性以便于索引和匹配。此过程完全发生在客户端侧,服务器端仅接收并处理已加密的查询和数据。 #### 2. 实现步骤概述 虽然不能使用诸如“首先”这样的引导词,但为了清晰表达流程,这里按照逻辑顺序描述各部分功能: - **启用 Client-Side Field Level Encryption (CSFLE)** CSFLE 是 MongoDB 中用于字段级加密的技术之一。它依赖于 AWS KMS 或 Azure Key Vault 等外部密钥管理系统存储加密所需的主密钥。 - **配置自动加密规则** 自动加密规则定义哪些集合中的特定字段应被加密以及采用何种模式(随机化或确定性)。这些设置通常记录在一个 JSON 文件中,并由驱动程序读取应用。 - **安装必要的库和支持版本** 使用最新版官方支持的 MongoDB 驱动程序,比如 Python 的 `pymongo` 版本 >= 3.12 ,因为它们包含了对 CSFLE 和 Queryable Encryption 的原生支持[^4]。 #### 3. 示例代码展示 下面给出一段基于 PyMongo 库实现带有多关键字模糊查询的例子,尽管这不是严格意义上的加密查询演示,但它展示了如何构建灵活高效的搜索条件结构: ```python from pymongo import MongoClient import re client = MongoClient('mongodb://localhost:27017/') db = client['test_database'] collection = db['items'] keywords = ['apple', 'banana'] # 多个关键词列表 regex_patterns = [re.compile(f'.*{kw}.*') for kw in keywords] query = {'$or': [{'name': pattern} for pattern in regex_patterns]} results = collection.find(query) for result in results: print(result) ``` 上述脚本片段利用正则表达式对象创建动态匹配路径,最终组合成复合 OR 条件传递给 MongoDB 进行检索。 需要注意的是,在实际部署生产环境中之前,请务必测试整个系统的兼容性和性能表现,尤其是当引入额外层如加密时可能会带来一定开销。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值