public List Get() { var minExportId = _shardState.GetExportId(); var date = DateTime.Now.Subtract(_delay); var doc = _mongoCollection.FindAs( Query.And( Query.NE("ExportId", BsonNull.Value), Query.LT("LastUpdateDateTime", BsonDocumentWrapper.Create(date)), Query.GT("ExportId", BsonValue.Create(minExportId)))) .SetFields("ExportId") .SetSortOrder(SortBy.Ascending("ExportId")) .SetLimit(_maxBatchSize); if (doc == null || !doc.Any()) { return null; } var maxExportId = doc.Max(x => x.ExportId); List interims = _mongoCollection .FindAs( Query.And( Query.GT("ExportId", BsonValue.Create(minExportId)), Query.LTE("ExportId", BsonValue.Create(maxExportId)))) .SetSortOrder(SortBy.Ascending("ExportId")) .ToList(); if (interims.Count == 0) { return null; } return interims; }