Массовое обновление таймсерий C# MongoDB с добавлением повторяющихся записейC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Гость
 Массовое обновление таймсерий C# MongoDB с добавлением повторяющихся записей

Сообщение Гость »

Использование MongoDB 7 и MongoDB.Driver 2.24.0 в .NET 7
У меня есть коллекция MongoDB, определенная как таймсерия, работает нормально, если я делаю только вставки, но теперь , записи могут дублироваться, и мне придется выполнить какую-то вставку/обновление. Я искал несколько примеров upserts, но, похоже, они неправильно работают с временными рядами, поэтому я закончил делать это следующим образом.
cTimeseries — это простой класс C#, подобный этому

Код: Выделить всё

public class cTimeseries {
[BsonId]
[BsonRepresentation(BsonType.ObjectId)]
public string? Id { get; set; }
/// 
/// Date in format "2024-03-12T14:14:57.000Z"
/// 
public DateTime timestamp { get; set; }// = new (0,0);
/// 
/// string with an alfanumeric code
/// 
public Metadata metadata { get; set; } = new Metadata();
/// 
/// set of 8 measurements
/// 
public double[] Measurements { get; set; }
/// 
/// Summer Flag
/// 
public byte Summer { get; set; }
/// 
/// kind of measure, default 1
/// 
public byte MeasureKind { get; set; } = 1;
/// 
/// extra data 26 caracters
/// 
public string Extradata { get; set; }
}
И моя текущая реализация upsert такова:

Код: Выделить всё

 public async Task Upsert(List records)
{
//queue all the deletes from incoming records and bulk delete/insert
List requests = new List(records.Count());
foreach (Ctimeseries record in records) {
var filter = new FilterDefinitionBuilder().Where(m => m.timestamp == record.timestamp && m.metadata == record.metadata);
var request = new DeleteOneModel(filter); //queue the delete
requests.Add(request);
}
await _CtimeseriesCol.BulkWriteAsync(requests); //perform bulk delete 

Подробнее здесь: [url]https://stackoverflow.com/questions/78160549/c-sharp-mongodb-timeseries-bulk-update-with-duplicate-records-upsert[/url]
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»