private static ICollection <BsonDocument> ItemToCollection(BsonDocument item) { var collection = new BsonDocumentCollection(); collection.Add(item); return(collection); }
public ICollection <BsonDocument> Execute() { ICollection <BsonDocument> result = new BsonDocumentCollection(); foreach (var document in _documents) { var tempDocument = document; foreach (var updateProperty in _updateDefintion.Value.AsBsonDocument.Elements) { var propertyName = updateProperty.Name; var updateValue = updateProperty.Value; BsonValue newValue = new BsonArray(); if (document.TryGetElement(propertyName, out BsonElement oldValue)) { newValue = oldValue.Value; } newValue.AsBsonArray.Add(updateValue); tempDocument[updateProperty.Name] = newValue; } result.Add(tempDocument); } return(result); }
public ICollection <BsonDocument> Execute() { var serializer = BsonSerializer.SerializerRegistry.GetSerializer <BsonDocument>(); var renderedStage = _pipelineStageDefinition.Render(serializer, BsonSerializer.SerializerRegistry); var projections = renderedStage.Document.GetElement(renderedStage.OperatorName).Value.AsBsonDocument; ICollection <BsonDocument> result = new BsonDocumentCollection(); foreach (var document in _documents) { BsonDocument projectedDocument = new BsonDocument(); for (int i = 0; i < projections.Names.Count(); i++) { var whatToTake = projections.Values.ElementAt(i); if (whatToTake.IsString && whatToTake.AsString.StartsWith("$")) { var projectedValue = document.Find(whatToTake.AsString.Remove(0, 1)); projectedDocument.Add(projections.Names.ElementAt(i), projectedValue); } else { projectedDocument.Add(projections.Names.ElementAt(i), whatToTake.AsBsonValue); } } result.Add(projectedDocument); } return(result); }
public ICollection <BsonDocument> Execute() { ICollection <BsonDocument> result = new BsonDocumentCollection(); var serializer = BsonSerializer.SerializerRegistry.GetSerializer(_pipelineStageDefinition.OutputType); var renderedStage = _pipelineStageDefinition.Render(serializer, BsonSerializer.SerializerRegistry); var limit = renderedStage.Document.GetElement(renderedStage.OperatorName).Value.AsInt32; foreach (var document in _documents.Take(limit)) { result.Add(document); } return(result); }
private IMongoCollection <TDocument> CreateFakeMongoCollection(string collectionName, IEnumerable <TDocument> data) { var documentCollection = new BsonDocumentCollection(); foreach (var document in data) { var bsonDocument = document.ToBsonDocument(); documentCollection.Add(bsonDocument); } var mongoCollection = new FakeMongoCollection <TDocument>(documentCollection); return(mongoCollection); }
public ICollection <BsonDocument> Execute() { ICollection <BsonDocument> result = new BsonDocumentCollection(); foreach (var document in _documents) { foreach (var updateProperty in _updateDefintion.Value.AsBsonDocument.Elements) { var updatedDocument = document.Update(updateProperty.Name, updateProperty.Value); result.Add(updatedDocument); } } return(result); }
public ICollection <BsonDocument> Execute() { ICollection <BsonDocument> result = new BsonDocumentCollection(); var renderedStage = _pipelineStageDefinition.Render(_bsonSerializer, BsonSerializer.SerializerRegistry); var fieldForUnwind = renderedStage.Document.GetElement("$unwind").Value.AsString.Remove(0, 1); foreach (var document in _documents) { if (document.AsBsonDocument.Contains(fieldForUnwind) && document.AsBsonDocument[fieldForUnwind].IsBsonArray) { for (int i = 0; i < document.AsBsonDocument[fieldForUnwind].AsBsonArray.Count; i++) { var unwindedDocument = new BsonDocument(document.AsBsonDocument); unwindedDocument[fieldForUnwind] = unwindedDocument[fieldForUnwind][i]; result.Add(unwindedDocument.AsBsonDocument); } } } return(result); }