C# 从MongoDb集合检索记录时,记录是否根据为该集合设置的索引进行排序?

C# 从MongoDb集合检索记录时,记录是否根据为该集合设置的索引进行排序?,c#,mongodb,C#,Mongodb,我有一个这样的案例: 我有一个名为“Test”的集合,我为它设置了一个索引,该索引如下所示: { "A" : 1, "B" : 1, "C" : 1 } 在我的代码中,我根据“A”作为特定值检索记录: List<Test> tests = Test.Find(Query.EQ("A", CertainValue)).ToList(); List tests=Test.Find(Query.EQ(“A”,CertainValue)).ToList(); 令我惊讶的是,所有记

我有一个这样的案例: 我有一个名为“Test”的集合,我为它设置了一个索引,该索引如下所示:

{
 "A" : 1,
 "B" : 1,
 "C" : 1
}
在我的代码中,我根据“A”作为特定值检索记录:

List<Test> tests = Test.Find(Query.EQ("A", CertainValue)).ToList();
List tests=Test.Find(Query.EQ(“A”,CertainValue)).ToList();
令我惊讶的是,所有记录都按照索引中提到的顺序排序(“B”升序,然后“C”升序)

我想知道这种行为是否总是可以预料的,记录是否总是会根据索引进行排序,或者我只是在想象一些东西,而这只是一个一次性的例子


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

与许多其他字典实现一样,随时可能更改:

“自然顺序”定义为数据库的自然顺序 集合中的对象

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

对于标准表,自然顺序不是特别有用,因为, 虽然顺序通常接近插入顺序,但并非如此 保证是。然而,对于封顶集合,自然顺序是 保证是插入顺序


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

谢谢您的回答。我对如何从MongoDB检索数据做了更多的实验,你是对的,顺序不能保证。例如,如果我试图根据属性“B”查找记录,则结果是根据“C”而不是“A”排序的。因此,我最终自己对它进行了排序:
Test.Find(Query.EQ(“A”,CertainValue)).SetSortOrder(SortBy.升序(“B”,“C”)).ToList()