public void Test()
        {
            var client = new MongoClient("");
            var server = client.GetServer();
            var db     = server.GetDatabase("");

            var collection           = db.GetCollection("");
            List <BsonDocument> docs = collection.FindAll().ToList();
            var builder = new BsonDocumentBuilder();

            var aggregateDoc = builder.BuildDocument(docs);
        }
Example #2
0
        /// <summary>
        ///     Performs a regular expression search against a single column. Case be sensitive or not.
        /// </summary>
        /// <param name="key"></param>
        /// <param name="value"></param>
        /// <param name="sensitive">True for case-senstive and false (default) if not.</param>
        /// <returns>List of T</returns>
        public async Task <IEnumerable <T> > Search(string key, string value, bool sensitive = false)
        {
            var bsonDocumentBuilder = new BsonDocumentBuilder
            {
                Key      = key,
                Value    = value,
                Operator = Operator.Regex
            };

            var filterDefinition = BuildFilterDefinition(bsonDocumentBuilder, sensitive);

            return(await GetDocuments(filterDefinition));
        }
Example #3
0
        /// <summary>
        /// </summary>
        /// <param name="entry"></param>
        /// <param name="sensitive">Only used for Regex to determine case-sensitivity (false = in-sensitive, true = sensitive)</param>
        /// <returns></returns>
        private FilterDefinition <T> BuildFilterDefinition(BsonDocumentBuilder entry, bool sensitive = false)
        {
            CheckObjectContainsProperty(entry.Key);
            FilterDefinition <T> filterDefinition;

            switch (entry.Operator)
            {
            case Operator.GreaterThan:
                filterDefinition = Builders <T> .Filter.Gt(entry.Key, entry.Value);

                break;

            case Operator.GreaterThanEquals:
                filterDefinition = Builders <T> .Filter.Gte(entry.Key, entry.Value);

                break;

            case Operator.LessThan:
                filterDefinition = Builders <T> .Filter.Lt(entry.Key, entry.Value);

                break;

            case Operator.LessThanEquals:
                filterDefinition = Builders <T> .Filter.Lte(entry.Key, entry.Value);

                break;

            case Operator.Regex:
                filterDefinition = Builders <T> .Filter.Regex(new StringFieldDefinition <T>(entry.Key),
                                                              new BsonRegularExpression(new Regex(entry.Value.ToString(),
                                                                                                  !sensitive ? RegexOptions.IgnoreCase : RegexOptions.None)));

                break;

            case Operator.NotEquals:
                filterDefinition = Builders <T> .Filter.Ne(entry.Key, entry.Value);

                break;

            default:
                filterDefinition = Builders <T> .Filter.Eq(entry.Key, entry.Value);

                break;
            }

            return(filterDefinition);
        }