簡體   English   中英

從MongoDb集合中檢索記錄時,是否根據為該集合設置的索引對記錄進行排序?

[英]When retrieving records from a MongoDb collection, do the records come back sorted based on the index that was set up for that collection?

我有一個看起來像這樣的情況:我有一個名為“ Test”的集合,並且已經為其建立了索引,索引看起來像這樣:

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

在我的代碼中,我基於“ A”為某個值來檢索記錄:

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

令我驚訝的是,所有記錄都按索引中提到的順序返回(“ B”升序,然后“ C”升序)

我想知道這種行為是否總是可以預期的,是否總是根據索引對記錄進行排序,還是我只是在想一些東西,而這只是一個例子?

PS。 記錄不會按排序輸入到集合中,因此這不是記錄的自然順序。

就像許多其他詞典實現一樣, 數據庫中的順序未定義或保證(有上限的集合除外),並且隨時可能更改:

“自然順序”定義為集合中對象的數據庫自然順序。

當執行不帶參數的find()時,數據庫將以自然前向順序返回對象。

對於標准表,自然順序並不是特別有用,因為盡管順序通常接近插入順序,但不能保證一定如此。 但是,對於上限集合,可以保證自然順序為插入順序。

如果需要以某種方式對它們進行排序,請使用顯式排序,或者參考特定的驅動程序(C#)實施文檔以查看是否為您對它們進行了排序。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM