为什么BSON类型的BSON比较顺序很重要?

时间:2016-01-02 06:42:54

标签: mongodb bson

当我读取MongoDB文档时,对于查询中的每个操作符, 例如here

该文件总是提到

要比较不同的BSON类型值,请参阅specified BSON comparison order

我按照指向该页面的链接阅读文档。我理解BSON是什么,但我并不认为乳清BSON比较顺序在这方面是相关的。

问题

BSON比较订单有什么用?  为什么它在这里有用? 如果可能的话,你能举个例子吗?

3 个答案:

答案 0 :(得分:1)

该列表试图告诉您,给定两个BSON类型您要比较 - 例如字符串和数组,它们将如何进行比较? (因为必须将其转换为另一个)

在文档中进一步了解示例,假设您有一个集合,其中所有文档都具有字段arr但具有不同类型(一些是数组,一些是数字)。你试试

db.coll.find().sort({arr: -1})

在这里,Mongo将所有文档进行比较,以确定返回它们的顺序。

1-> 13列出了哪些类型具有优先权的文档。例如,数字(#3)的优先级高于数组(#6),因此在将数组与数字进行比较时,必须将数组转换为数字。

文档继续说明,通过根据排序顺序(升序/降序)选择数组的最大或最小元素,将数组转换为数字。

答案 1 :(得分:1)

  

BSON比较订单的用途是什么?

用于比较两个值并确定它们是否相等或者一个是大于还是小于另一个。 MongoDB中的所有值都表示为BSON。

  

为什么它与此相关?

因为您正在查看比较运算符,并且您需要知道比较意味着什么。如果$lt返回给定字段小于某个值的记录,则需要知道何时字段中的值计算为小于该值,并且当它没有任何两个值具有可比性时,比较和排序才有用,因此如果比较两种不同的类型,那么对类型的排序也会定义结果。

答案 2 :(得分:0)

MongoDB中的所有值都表示为BSON。需要进行比较以设置决定哪些数据应该以什么顺序显示。比较不同BSON类型的值时,MongoDB使用从最低到最高的以下比较顺序:

MinKey (internal type)
Null
Numbers (ints, longs, doubles, decimals)
Symbol, String
Object
Array
BinData
ObjectId
Boolean
Date
Timestamp
Regular Expression
MaxKey (internal type)

有关详细信息,请参阅:- https://docs.mongodb.com/manual/reference/bson-type-comparison-order/#bson-types-comparison-order