首页 > 数据库技术 > 详细

mongodb 中的Multikey Index Bounds解释$elemMatch

时间:2016-10-18 13:54:02      阅读:276      评论:0      收藏:0      [点我收藏+]

首先说一下 $elemMatch的用法:

{ _id: 1, results: [ 82, 85, 88 ] }

{ _id: 2, results: [ 75, 88, 89 ] }

$elemMatch是匹配document 中数组中至少有一个元素满足$elemMatch中的所有条件,例如:

db.scores.find(
   { results: { $elemMatch: { $gte: 80, $lt: 85 } } }
)

查询结果为:

{ "_id" : 1, "results" : [ 82, 85, 88 ] }

结下来解释一下(Multikey Index Bounds):
在一个查询期间,索引的扫描范围定义了部分索引为了搜索,当多个(条件)predicates 超过一个索引存在时:mongodb 将试图去合并这些(条件)predicates的边界,要么通过求交集的方法合并
要么通过组合的方法,为了去产生一个比较小的扫描范围。
给定一个索引数组字段,考虑到在一个查询中,在一个数组中指定了多个(条件)predicates并且可以使用 Multikey Index。
if $elemMatch 中有多个(条件)predicates ,mongodb会合并 Multikey Index的边界。因此,会有$elemMatch是匹配document 中数组中至少有一个元素满足$elemMatch中的所有条件。

继续上面的例子,逐个条件边界的范围:
大于等于80($gte:80)的边界为[80,inf];
小于85
($lt:85)的边界为[-inf,85]。
由于使用了$
elemMatch组织多个条件查询,mongodb查询的边界为results:[[80,85)].









 

mongodb 中的Multikey Index Bounds解释$elemMatch

原文:http://www.cnblogs.com/Kellana/p/5972808.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!