0

我有一个看起来像这样的案例:我有一个名为“Test”的集合,我为它设置了一个索引,索引看起来像这样:

{
 "A" : 1,
 "B" : 1,
 "C" : 1
}

在我的代码中,我正在检索基于“A”是某个值的记录:

List<Test> tests = Test.Find(Query.EQ("A", CertainValue)).ToList();

令我惊讶的是,所有记录都按索引中提到的顺序排序(“B”升序,然后“C”升序)

我想知道这种行为是否总是可以预料的,记录是否总是会根据索引进行排序,或者我只是在想象一些东西,这只是一个偶然的情况?

PS。记录未输入到排序的集合中,因此这不是记录的自然顺序。

4

1 回答 1

1

与许多其他字典实现一样,数据库中的顺序没有定义或保证(上限集合除外)并且随时可能更改:

“自然顺序”被定义为数据库对集合中对象的本机排序。

当执行不带参数的 find() 时,数据库会以正向自然顺序返回对象。

对于标准表,自然顺序并不是特别有用,因为尽管顺序通常接近插入顺序,但不能保证如此。但是,对于 Capped Collections,自然顺序保证为插入顺序。

如果您需要以某种方式对它们进行排序,请使用显式排序,或者参考您的特定驱动程序 (C#) 实现文档以查看它是否为您排序。

于 2012-11-01T18:27:30.380 回答