private ActivityLoggedModelViewModel CreateActivityViewModel(BsonDocument doc, string modelName)
        {
            var model = new ActivityLoggedModelViewModel
            {
                Simple  = ProcessBsonDocumentForSimpleElement(doc, modelName),
                Complex = ProcessBsonDocumentForComplex(doc, modelName)
            };

            if (doc.Elements.Any(x => x.Value.IsBsonArray))
            {
                model = ProcessBsonDocumentForCollections(model, doc);
            }

            return(model);
        }
        private ActivityLoggedModelViewModel ProcessBsonDocumentForCollections(ActivityLoggedModelViewModel result, BsonDocument doc)
        {
            var collections = new List <ActivityLoggedModelViewModel>();

            foreach (var element in doc.Elements.Where(x => x.Value.IsBsonArray).ToList())
            {
                foreach (var ite in element.Value.AsBsonArray.ToList())
                {
                    var item = CreateActivityViewModel(ite.ToBsonDocument(), element.Name);
                    collections.Add(item);
                }
            }

            result.Collections = collections;
            return(result);
        }