MongoDB类型顺序

pet*_*rov 6 mongodb

我在MongoDB中有这个集合.它包含
val键下的不同类型的值.
另外,请注意我通过val升序对其进行排序.

[test] 2014-02-20 08:53:11.857 >>> db.account.find().sort({val:1});
{
        "_id" : ObjectId("5304d25786dd4b348bcc2b2e"),
        "username" : "usr10",
        "password" : "123",
        "val" : [ ]
}
{
        "_id" : ObjectId("5304d29986dd4b348bcc2b2f"),
        "username" : "usr20",
        "password" : "456",
        "val" : null
}
{
        "_id" : ObjectId("5304e31686dd4b348bcc2b37"),
        "username" : "usr80",
        "password" : "555",
        "val" : 1
}
{
        "_id" : ObjectId("5304d50a86dd4b348bcc2b32"),
        "username" : "usr50",
        "password" : "555",
        "val" : [
                40
        ]
}
{
        "_id" : ObjectId("5304d4c886dd4b348bcc2b31"),
        "username" : "usr40",
        "password" : "777",
        "val" : 200
}
{
        "_id" : ObjectId("5304d2a186dd4b348bcc2b30"),
        "username" : "usr30",
        "password" : "888",
        "val" : {

        }
}
{
        "_id" : ObjectId("5304d97786dd4b348bcc2b33"),
        "username" : "usr50",
        "password" : "555",
        "val" : {
                "ok" : 1
        }
}
{
        "_id" : ObjectId("5304e2dc86dd4b348bcc2b36"),
        "username" : "usr80",
        "password" : "555",
        "val" : true
}
{
        "_id" : ObjectId("5304e22f86dd4b348bcc2b34"),
        "username" : "usr60",
        "password" : "555",
        "val" : ISODate("2014-02-19T16:56:15.787Z")
}
{
        "_id" : ObjectId("5304e2c786dd4b348bcc2b35"),
        "username" : "usr70",
        "password" : "555",
        "val" : /abc/
}
[test] 2014-02-20 08:53:19.357 >>>
Run Code Online (Sandbox Code Playgroud)

我正在读一本书,上面写着以下内容.

MongoDB具有关于类型比较的层次结构.有时您将拥有
一个具有多种类型的单个键:例如,整数和布尔值,或字符串
和空值.如果对具有混合类型的键进行排序,则会有一个预定义的
顺序,它们将被排序.从最小值到最大值,此排序
如下:
1.最小值
2. null
3.数字(整数) ,longs,double)
4.字符串
5.对象/文档
6.数组
7.二进制数据
8.对象ID
9.布尔
10.日期
11.时间戳
12.正则表达式
13.最大值

那么为什么我的排序顺序不同?例如,
当我排序(见上文)时,我看到了这些奇怪的东西:

1)我不知道"最小值"和"最大值"是什么意思.

2)数组前面有一个数组.
甚至在null之前就会出现一个空数组.

3)数字1出现在数组之前

4)数组[40]介于数字1和200之间.

有人可以在一些细节中解释这个结果吗?
提前谢谢了.

hei*_*nob 2

你的书和官方文档说的一样。但这也无法解释两个数组的模糊排序顺序。至少对Minimum value和两种类型Maximum value进行了解释。它们是内部的。