执行含$unwind的聚合查询时,是否保留数组字段的多键索引?
问题
给定文档结构如下:
{ A: [ { B: "number", C: "number" } ] }
假设字段A上存在一个多键索引,请问执行以下聚合查询后,该多键索引是否会被保留?
db.col.aggregate( [ { $unwind: "$A" }, { $match: { } } ] )
答案
- 这个聚合操作不会改动原集合的任何数据或索引,字段
A上的多键索引会完整保留。 - 聚合管道只做临时的数据处理与转换,所有操作都作用于数据的临时副本,输出的是处理后的结果,完全不会影响原始集合里的文档结构和已创建的索引。这里的
$unwind只是把数组字段拆分成多条文档输出,但原集合的数组数据和对应的多键索引都不会有任何变化。
内容的提问来源于stack exchange,提问作者Bear Bile Farming is Torture
相关产品推荐
相关产品推荐

