如何解决使用带有过滤器表达式的 MongoDB 视图
我想使用 MongoDB 视图,但从我的角度来看,MongoDB 中的视图似乎只是针对预先设置 $match 条件的“静态”用例。即使在简单的聚合管道中,Mongo 似乎也无法将过滤条件正确地推送到 $match 阶段。 特别是,在使用“$Project”聚合管道阶段时,我观察到 MongoDB 不再使用底层集合索引。举个简单的例子
我的视图仅包含 2 个字段,它们与基础集合中的字段相同。该集合有大约 3500 万条记录,并且字段 Metadata.Lotnumber 已编入索引
$project: {
'Metadata.Lotnumber': 1,Lot: '$Metadata.Lotnumber'
}
创建视图后,我查询了两次视图
-
使用表达式过滤视图
{"Metadata.Lotnumber":"1234"}
--> 查询结果(40 个文档)立即返回(必须使用索引) 3. 用表达式过滤视图
{"Lotnumber":"1234"}
--> 前 20 个文档大约需要 8 秒
我的主要问题是:你们中的任何人是否知道是否有一种文档可以使用哪些聚合阶段,而不会失去将过滤条件正确下推到“$match”阶段(聚合的第一阶段)的可能性管道)。
感谢您的帮助!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。