public void TestFields()
        {
            var pairs = new[]
            {
                new { Fields = "", Mongo = "{ }" },
                new { Fields = "name(1),age(1)", Mongo = "{ \"name\" : 1, \"age\" : 1 }" },
                new { Fields = "id(0),age(1)", Mongo = "{ \"_id\" : 0, \"age\" : 1 }" },
                new { Fields = "textScore(1)", Mongo = "{ \"textScore\" : { \"$meta\" : \"textScore\" } }" },
            };

            for (int i = 0; i < pairs.Length; i++)
            {
                var pair       = pairs[i];
                var definition = new FieldSpecToProjectionDefinition().Compile <BsonDocument>(pair.Fields);
                var doc        = definition as BsonDocumentProjectionDefinition <BsonDocument, BsonDocument>;

                Assert.NotNull(doc);

                string mongo = (doc == null ? "" : doc.Document.ToString());

                Assert.AreEqual(pair.Mongo, mongo, String.Format("Iteration {0}", i));
            }
        }
        public void TestFields()
        {
            var pairs = new[]
            {
                new { Fields = "", Mongo = "{ }" },
                new { Fields = "name(1),age(1)", Mongo = "{ \"name\" : 1, \"age\" : 1 }" },
                new { Fields = "id(0),age(1)", Mongo = "{ \"_id\" : 0, \"age\" : 1 }" },
                new { Fields = "textScore(1)", Mongo = "{ \"textScore\" : { \"$meta\" : \"textScore\" } }" },
            };

            for (int i = 0; i < pairs.Length; i++)
            {
                var pair = pairs[i];
                var definition = new FieldSpecToProjectionDefinition().Compile<BsonDocument>(pair.Fields);
                var doc = definition as BsonDocumentProjectionDefinition<BsonDocument, BsonDocument>;

                Assert.NotNull(doc);

                string mongo = (doc == null ? "" : doc.Document.ToString());

                Assert.AreEqual(pair.Mongo, mongo, String.Format("Iteration {0}", i));
            }
        }