Сортировка по $natural в MongoDB с официальным драйвером С#

Я использую официальный драйвер C# и хочу отсортировать коллекцию по $natural.

Я знаю, для сортировки по ключам я могу использовать

collection.Find(query).SetSortOrder(SortBy.Descending("Name"))

Как сортировать с помощью $natural?


person signals4change    schedule 22.06.2011    source источник
comment
Важное примечание: нет необходимости сортировать по возрастанию в естественном порядке. Это порядок, в котором MongoDB naturally возвращает результаты.   -  person i3arnon    schedule 13.07.2014


Ответы (2)


Да, вы можете использовать сортировку по убыванию. Например:

collection.Insert(new BsonDocument("x", 1));
collection.Insert(new BsonDocument("x", 2));
collection.Insert(new BsonDocument("x", 3));

foreach (var document in collection.FindAll()
    .SetSortOrder(SortBy.Descending("$natural"))) 
{
    Console.WriteLine(document.ToJson());
}
person Robert Stam    schedule 22.06.2011

Обновлен ответ Роберта Стэма на что-то примерно эквивалентное, используя синтаксис для драйвера 2.0...

await collection.InsertOneAsync(new BsonDocument("x", 1));
await collection.InsertOneAsync(new BsonDocument("x", 2));
await collection.InsertOneAsync(new BsonDocument("x", 3));

foreach (
    var document in
        await
            collection.Find(_ => true)
                .Sort(new SortDefinitionBuilder<BsonDocument>().Descending("$natural"))
                .ToListAsync())
{
    Console.WriteLine(document.ToJson());
}
person carmbrester    schedule 28.07.2015