Я пытаюсь реализовать технику, известную как bucketing в MongoDb (или так называлось в мастерской MongoDB), и для достижения этой цели использует Push и Slice. Это делается для того, чтобы создать систему пользовательских фидов, аналогичную системе Twitter/facebook.Bucketing with MongoDB C# Драйвер
По существу у меня есть документ с массивом элементов (элементы фида). Я хочу создать новый документ, когда это количество элементов достигнет определенного числа для пользователя.
Итак, если в последней коллекции документа userFeed имеется 50 элементов, я хочу, чтобы новый документ был создан, и новый элемент, который нужно вставить в массив элементов вновь созданного документа.
Это код, который я до сих пор:
var update = Builders<UserFeed>
.Update
.CurrentDate(x => x.DateLastUpdated)
.PushEach(x =>
x.Items,
new List<FeedItemBase> { feedItem },
50);
var result = await Collection.UpdateOneAsync(x =>
x.User.Id == userFeedToWriteTo,
update,
new UpdateOptions { IsUpsert = true }
).ConfigureAwait(false);
...
Но не похоже, чтобы создать новый документ, или даже вставить элемент в массив существующего документа. Я думал, что создание нового документа будет обработано этим
new UpdateOptions { IsUpsert = true }
, но, по-видимому, нет. Любая помощь была бы принята с благодарностью