/// <summary>Insert M copies of each of N versioned instances B.</summary> private void InsertRecordsB(Context context) { var db = GetDb(context); var collection = db.GetCollection <B>("B"); if (false) { var indexOptions = new CreateIndexOptions(); var indexKeys = Builders <B> .IndexKeys.Descending(p => p.DataSet).Descending(p => p.Id); var indexModel = new CreateIndexModel <B>(indexKeys, indexOptions); collection.Indexes.CreateOne(indexModel); } if (true) { var indexOptions = new CreateIndexOptions(); var indexKeys = Builders <B> .IndexKeys.Ascending(p => p.KeyElement).Descending(p => p.DataSet).Descending(p => p.Id); var indexModel = new CreateIndexModel <B>(indexKeys, indexOptions); collection.Indexes.CreateOne(indexModel); } if (true) { var indexOptions = new CreateIndexOptions(); var indexKeys = Builders <B> .IndexKeys .Ascending(p => p.StringElement1) .Ascending(p => p.StringElement2) .Ascending(p => p.DoubleElement) .Ascending(p => p.IntElement) // .Ascending(p => p.KeyElement) .Descending(p => p.DataSet).Descending(p => p.Id); var indexModel = new CreateIndexModel <B>(indexKeys, indexOptions); collection.Indexes.CreateOne(indexModel); } List <B> records = new List <B>(); for (int dataSetIndex = 0; dataSetIndex < dataSetCount_; ++dataSetIndex) { TemporalId dataSet = TemporalId.Next(); for (int versionIndex = 0; versionIndex < versionCount_; ++versionIndex) { for (int recordIndex = 0; recordIndex < recordCount_; ++recordIndex) { var rec = new B(); rec.Id = TemporalId.Next(); rec.DataSet = dataSet; rec.KeyElement = String.Concat("KeyPrefix", recordIndex); rec.StringElement1 = (recordIndex % 2).ToString(); rec.StringElement2 = (recordIndex % 3).ToString(); rec.DoubleElement = recordIndex; rec.IntElement = recordIndex; if (arraySize_ > 0) { rec.ArrayElement = new List <double>(); for (int i = 0; i < arraySize_; ++i) { rec.ArrayElement.Add(i); } } rec.VersionElement = versionIndex; records.Add(rec); } } } collection.InsertMany(records); context.Log.Verify($"Inserted {records.Count} record versions."); }