Beispiel #1
0
        // parameters:
        //      max 返回最多多少个元素。如果为 -1,表示不限制
        //      hit_count   返回命中总数。是命中的整个集合的数量,除去 start 以后的值
        public List <ValueCount> ListDates(int start,
                                           int max,
                                           out int hit_count)
        {
            hit_count = 0;
            IMongoCollection <AccessLogItem> collection = this.LogCollection;

            if (collection == null)
            {
                return(null);
            }

#if NO
            BasicDBObject key = new BasicDBObject();
            14.key.put("name", "true");
            15.BasicDBObject initial = new BasicDBObject();
            16.initial.put("count", 0);
            17.BasicDBObject condition = new BasicDBObject();
            18.// condition.put("name", "liguohui");
            19.String reduceString = "function(obj,prev) { prev.count++; }";

            20.DBObject dbo = coll.group(key, condition, initial, reduceString);
#endif
            var document    = new BsonDocument("count", 0);
            var keyFunction = (BsonJavaScript) @"function(doc) {
        var date = new Date(doc.OperTime);
        var dateKey = date.toISOString().slice(0, 10);
        return {'day':dateKey};
    }";
            //         var dateKey = date.getFullYear()+'|'+(date.getMonth()+1)+'|'+date.getDate();
            var result = collection.Group(
                Query.Null,
                keyFunction,
                document,
                new BsonJavaScript("function(doc, out){ out.count++; }"),
                null
                ).Skip <BsonDocument>(start);

            List <ValueCount> values = new List <ValueCount>();
            int nCount = 0;
            foreach (BsonDocument doc in result)
            {
                ValueCount item = new ValueCount();
                item.Value = doc.GetValue("day", "").ToString().Replace("-", "");
                item.Count = doc.GetValue("count", 0).ToInt32();
                values.Add(item);
                nCount++;
                if (max != -1 && nCount >= max)
                {
                    break;
                }
            }

            hit_count = result.Count <BsonDocument>();
            return(values);
        }
 public DBObject getMetaData()
 {
     if (_metadata == null)
         _metadata = new BasicDBObject();
     return _metadata;
 }
Beispiel #3
0
        // parameters:
        //      max 返回最多多少个元素。如果为 -1,表示不限制
        //      hit_count   返回命中总数。是命中的整个集合的数量,除去 start 以后的值
        public List<ValueCount> ListDates(int start, int max, out int hit_count)
        {
            hit_count = 0;
            MongoCollection<AccessLogItem> collection = this.LogCollection;
            if (collection == null)
                return null;

#if NO
            BasicDBObject key = new BasicDBObject();   
14.key.put("name", "true");   
15.BasicDBObject initial = new BasicDBObject();   
16.initial.put("count", 0);   
17.BasicDBObject condition = new BasicDBObject();   
18.// condition.put("name", "liguohui");   
19.String reduceString = "function(obj,prev) { prev.count++; }";   

20.DBObject dbo = coll.group(key, condition , initial, reduceString); 
#endif
            var document = new BsonDocument("count", 0);
            var keyFunction = (BsonJavaScript)@"function(doc) {
        var date = new Date(doc.OperTime);
        var dateKey = date.toISOString().slice(0, 10);
        return {'day':dateKey};
    }";
            //         var dateKey = date.getFullYear()+'|'+(date.getMonth()+1)+'|'+date.getDate();
            var result = collection.Group(
                Query.Null,
                keyFunction,
                document,
                new BsonJavaScript("function(doc, out){ out.count++; }"),
                null
            ).Skip<BsonDocument>(start);


            List<ValueCount> values = new List<ValueCount>();
            int nCount = 0;
            foreach (BsonDocument doc in result)
            {
                ValueCount item = new ValueCount();
                item.Value = doc.GetValue("day", "").ToString().Replace("-", "");
                item.Count = doc.GetValue("count", 0).ToInt32();
                values.Add(item);
                nCount++;
                if (max != -1 && nCount >= max)
                    break;
            }

            hit_count = result.Count<BsonDocument>();
            return values;
        }