public override BsonDocument Render( IBsonSerializer documentSerializer, IBsonSerializerRegistry serializerRegistry) { if (documentSerializer is IBsonSerializer <TDocument> typedSerializer) { return(_sort.Render(typedSerializer, serializerRegistry)); } return(_sort.Render( serializerRegistry.GetSerializer <TDocument>(), serializerRegistry)); }
private void Assert <TDocument>(SortDefinition <TDocument> sort, string expectedJson) { var documentSerializer = BsonSerializer.SerializerRegistry.GetSerializer <TDocument>(); var renderedSort = sort.Render(documentSerializer, BsonSerializer.SerializerRegistry); renderedSort.Should().Be(expectedJson); }
private static BsonDocument RenderToBsonDocument <T>(this SortDefinition <T> filter) { var registry = BsonSerializer.SerializerRegistry; var serializer = registry.GetSerializer <T>(); return(filter.Render(serializer, registry)); }
public static BsonDocument RenderToBsonDocument <T>(this SortDefinition <T> sortDefinition) { if (sortDefinition == null) { return(new BsonDocument()); } var serializerRegistry = BsonSerializer.SerializerRegistry; var documentSerializer = serializerRegistry.GetSerializer <T>(); return(sortDefinition.Render(documentSerializer, serializerRegistry)); }
public IFindFluent <TDocument, TDocument> Sort(SortDefinition <TDocument> sort) { if (this.SortValues == null) { this.SortValues = new Dictionary <string, SortMode>(); } var serializerRegistry = BsonSerializer.SerializerRegistry; var documentSerializer = serializerRegistry.GetSerializer <TDocument>(); var sortRendered = sort.Render(documentSerializer, serializerRegistry); foreach (var item in sortRendered) { this.SortValues.Add(item.Name, (item.Value > 0) ? SortMode.Asc : SortMode.Desc); } return(this); }
protected async Task <MGPagination <TEntity> > GetPaginationAsync(IMongoCollection <TEntity> collection, int page, int pageSize, FilterDefinition <TEntity> filter = null, SortDefinition <TEntity> sort = null, Expression <Func <TEntity, TEntity> > projection = null) { var pipeline = new List <BsonDocument>(); //{{ "$match" : { "PersonId" : "5acedf96c86324070424f263", "isCurrentlyWorkHere" : true } }} if (filter != null) { pipeline.Add(new BsonDocument { { "$match", filter.Render(_documentSerializer, _serializerRegistry) } }); } if (sort != null) { pipeline.Add(new BsonDocument { { "$sort", sort.Render(_documentSerializer, _serializerRegistry) } }); } if (projection != null) { var projectionBuilder = Builders <TEntity> .Projection.Expression(projection); pipeline.Add(new BsonDocument { { "$project", projectionBuilder.Render(_documentSerializer, _serializerRegistry).Document } }); } pipeline.Add(new BsonDocument { { "$group", new BsonDocument { { "_id", 0 }, { "total", new BsonDocument { { "$sum", 1 } } }, { "datas", new BsonDocument { { "$push", "$$ROOT" } } } } } }); pipeline.Add(new BsonDocument { { "$project", new BsonDocument { { "_id", 0 }, { "total", 1 }, { "datas", new BsonDocument { { "$slice", new BsonArray(new object[] { "$datas", page * pageSize, pageSize }) } } } } } }); var aggregate = collection.Aggregate <BsonDocument>(pipeline); var data = await aggregate.FirstOrDefaultAsync(); var result = data == null ? new MGPagination <TEntity>() { datas = new TEntity[0], total = 0 } : BsonSerializer.Deserialize <MGPagination <TEntity> >(data); return(result); }
private void PrintQuerySort(SortDefinition <User> sortDefinition) { _helper.WriteLine("Sort query"); _helper.WriteLine(sortDefinition.Render(BsonSerializer.SerializerRegistry.GetSerializer <User>(), BsonSerializer.SerializerRegistry).ToString()); }
public static BsonDocument DefaultRender( this SortDefinition <BsonDocument> bsonQuery) { return(bsonQuery.Render(DocumentSerializer, SerializerRegistry)); }
/// <summary> /// Renders the sort to a MongoDB.Bson.BsonDocument. /// </summary> /// <param name="sort"></param> /// <returns></returns> public BsonDocument Render(SortDefinition <TEntity> sort) { var collection = GetCollection(); return(sort.Render(collection.DocumentSerializer, collection.Settings.SerializerRegistry)); }