Esempio n. 1
0
        private GroupArgs BuildBsonQuery(BsonObjectId fromBsonId, BsonObjectId toBsonId)
        {
            var query = Query <LogEntry> .Where(r =>
                                                r.BsonObjectId >= fromBsonId &&
                                                r.BsonObjectId <= toBsonId);

            var groupArgs = new GroupArgs
            {
                Initial        = new BsonDocument(new BsonElement(CountKey, new BsonInt32(0))),
                KeyFields      = new GroupByBuilder(new[] { LevelKey }),
                ReduceFunction = new BsonJavaScript(
                    string.Format("function ( curr, result ) {{ result.{0}++; }}", CountKey)),
                Query = query
            };

            return(groupArgs);
        }
Esempio n. 2
0
        /// <summary>
        /// GroupByCount
        /// </summary>
        /// <param name="collectionName"></param>
        /// <param name="FieldName"></param>
        /// <returns></returns>
        public static Dictionary <string, int> GroupCount(string collectionName, string FieldName, IMongoQuery query = null)
        {
            MongoCollection col      = GetDatabaseByType(_defaultDatabaseName).GetCollection(collectionName);
            GroupArgs       g        = new GroupArgs();
            var             groupdoc = new GroupByDocument();

            groupdoc.Add(FieldName, true);
            g.KeyFields      = groupdoc;
            g.ReduceFunction = new BsonJavaScript("function(obj,prev){ prev.count++;}");
            g.Initial        = new BsonDocument().Add("count", 0);
            if (query != null)
            {
                g.Query = query;
            }
            var GroupResult = col.Group(g);
            var result      = new Dictionary <string, int>();

            foreach (BsonDocument item in GroupResult)
            {
                result.Add(item.GetElement(FieldName).Value.ToString(), (int)item.GetElement("count").Value.AsDouble);
            }
            return(result);
        }
 public virtual IEnumerable <BsonDocument> Group(GroupArgs args)
 {
     return(this.context.GetCollection <TEntity>().Group(args));
 }