mongo(四)Comparison/Sort Order

当对不同BSON类型数据进行比较时,Mongo使用如下比较顺序,从低到高:

(1)MinKey(internal type)(2)Null(3)Numbers(ints,longs,doubles,decimals)(4)Symbol,String(5)Object(6)Array(7)BinData
(8)ObjectId(9)Boolean(10)Date(11)Timestamp(12)Regular Expression(13)MaxKey(internal type)

数字类型:Mongo把一些类型作为比较目标。例如,数字类型的在比较前要进行转换。

String:默认情况下,Mongo使用简单二进制来比较字符串。

Collation:3.4版本新加,允许用户对字符串排序指定语言特定的规则,就像字母大小写,重点标记。
Collation定义的语法如下:

{
   locale: <string>,
   caseLevel: <boolean>,
   caseFirst: <string>,
   strength: <int>,
   numericOrdering: <boolean>,
   alternate: <string>,
   maxVariable: <string>,
   backwards: <boolean>
}

当指定Collation时,locale域是必输项,其他的可选。

如果没有Collation指定在集合或者操作上,MongoDB对于字符串的比较跟以前版本一样,都是简单二进制对比。

Arrays:对于数组的比较,如果是小于或者升序比较,比较数组中的最小元素。如果是大于或者降序比较,比较数组中的最大元素。
空数组小于非空数组。

Dates and Timestaps:3.0.0版本之前两者同时排序,之后Date对象优先于Timestamp对象。

对于不存在或者值不存在域的比较,以空作处理。

BinData类型的排序步骤如下:
(1)首先数据的长度或者尺寸。
(2)然后通过BSON的一个字节的亚类型。
(3)最后,通过这些数据,执行一个字节对字节的比较

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值