2013-04-03 1 views
2

MongoDB 2.4 добавлено новое "Limit Number of Elements in an Array after an Update" feature. Это, как он может быть использован через оболочку:MongoDB 2.4 «Ограниченное количество элементов в массиве после обновления» с использованием драйвера C#?

db.students.update(
    { _id: 1 }, 
    { $push: 
     { scores: 
      { $each : 
      [ 
       { attempt: 3, score: 7 }, 
       { attempt: 4, score: 4 } 
      ], 
      $sort: { score: 1 }, 
      $slice: -3 
      } 
     } 
    } 
) 

Как это может быть достигнуто с C# -driver в MongoDB в?

ответ

5

Вот пример тест, который показывает, как сделать это без использования типизированных классов: https://github.com/mongodb/mongo-csharp-driver/blob/master/MongoDB.DriverUnitTests/Builders/UpdateBuilderTests.cs#L492

Соответствующий фрагмент кода, который вы ищете это:

var update = Update.PushEach(
    "name", 
    new PushEachOptions { Slice = -3, Sort = SortBy.Descending("a") }, 
    value1ToPush, 
    value2ToPush); 

Мы также поддерживаем это, если вы используете типизированные объекты: https://github.com/mongodb/mongo-csharp-driver/blob/master/MongoDB.DriverUnitTests/Builders/UpdateBuilderTests.cs#L524

var update = Update<Test>.PushEach(
    x => x.B, 
    args => args.SortDescending(x => x.C).Slice(-3), 
    new[] { new B { C = 0 }, new B { C = 1 } }); 

Наконец, как и все остальное в драйвере .NET, вы можете всегда создавайте BsonDocument, который выглядит точно так же, как и ваша структура выше, и просто выполняйте его.

+0

Отлично, спасибо за быстрый ответ! –