Пример #1
0
        private static ICollection <BsonDocument> ItemToCollection(BsonDocument item)
        {
            var collection = new BsonDocumentCollection();

            collection.Add(item);
            return(collection);
        }
Пример #2
0
        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);
        }
Пример #3
0
        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);
        }
Пример #4
0
        public void DocumentQuery()
        {
            var people = (from p in BsonDocumentCollection.AsQueryable()
                          where p.Key("age") > 21
                          select(string) p["fn"]).ToList();

            Assert.AreEqual(3, people.Count);
        }
Пример #5
0
        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);
        }
Пример #7
0
        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);
        }
Пример #8
0
        public void BsonDocumentQuery()
        {
            var people = from p in BsonDocumentCollection.AsQueryable()
                         where p.Key("age") > 21
                         select(string) p["fn"];

            var queryObject = ((IMongoQueryable)people).GetQueryObject();

            Assert.AreEqual(new BsonDocument {
                { "fn", 1 }
            }, queryObject.Fields);
            Assert.AreEqual(0, queryObject.NumberToLimit);
            Assert.AreEqual(0, queryObject.NumberToSkip);
            Assert.AreEqual(@"{ ""age"" : { ""$gt"" : 21 } }", queryObject.Query.ToJson());
        }
        public void DocumentQuery()
        {
            var people = from p in BsonDocumentCollection.AsQueryable()
                         where p.Key("age") > 21
                         select(string) p["fn"];

            var queryObject = ((IMongoQueryable)people).GetQueryObject();

            Assert.AreEqual(new BsonDocument {
                { "fn", 1 }, { "_id", 0 }
            }, queryObject.Fields);
            Assert.AreEqual(0, queryObject.NumberToLimit);
            Assert.AreEqual(0, queryObject.NumberToSkip);
            Assert.AreEqual(
                new BsonDocument("age", new BsonDocument("$gt", 21)),
                queryObject.Query);
        }
Пример #10
0
        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);
        }