You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

给对象类型字段field_1创建索引而非其子字段,会产生什么效果?

给嵌套文档field_1创建整体索引的结果

当你执行db.coll.createIndex( { field_1: 1} )给整个嵌套文档field_1创建索引时,会产生以下几个关键结果:

  • 仅支持完整嵌套文档的匹配查询:这个索引只会在查询条件是完全匹配整个field_1结构和值时生效。比如执行db.coll.find({ field_1: { A: true, B: true } })会命中索引,但如果查询子字段(如db.coll.find({ "field_1.A": true })),该索引完全无法被利用,MongoDB会执行全集合扫描。

  • 索引存储整个嵌套文档内容:索引条目会保存field_1下所有键值对的完整结构,相比单独给field_1.A或field_1.B建索引,它占用的存储空间更大——如果field_1包含更多子字段或较大的值,这个差异会更明显。

  • 无法支持子字段的排序/聚合操作:如果需要按field_1.A或field_1.B排序(如db.coll.find().sort({ "field_1.A": 1 })),或者在聚合中基于这些子字段做分组、过滤,这个整体索引提供不了任何支持,必须单独为对应子字段创建索引。

  • 子字段更新会触发整个索引条目更新:当field_1下的任意子字段(比如A或B)的值发生修改时,MongoDB需要更新整个field_1对应的索引条目,相比单独子字段索引,更新操作的开销更高。

内容的提问来源于stack exchange,提问作者Bear Bile Farming is Torture

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 16:05:40