public void TestOutReplaceSharded()
        {
            var options  = MapReduceOptions.SetOutput(MapReduceOutput.Replace("name", true));
            var expected = "{ \"out\" : { \"replace\" : \"name\", \"sharded\" : true } }";

            Assert.AreEqual(expected, options.ToJson());
        }
        public void TestOutReplace()
        {
            var options  = MapReduceOptions.SetOutput(MapReduceOutput.Replace("name"));
            var expected = "{ \"out\" : \"name\" }";

            Assert.AreEqual(expected, options.ToJson());
        }
        public void TestOutReplaceWithDatabase()
        {
            var options  = MapReduceOptions.SetOutput(MapReduceOutput.Replace("database", "name"));
            var expected = "{ \"out\" : { \"replace\" : \"name\", \"db\" : \"database\" } }";

            Assert.AreEqual(expected, options.ToJson());
        }
        public void UpdateUserNote()
        {
            var result = _membersCollection.MapReduce(
                MapReduceCodeLoader.Load("ResponsesUserNote.map.js"),
                MapReduceCodeLoader.Load("Notes.reduce.js"),
                MapReduceOptions.SetOutput(MapReduceOutput.Replace(CollectionNames.Member)));

            if (result.Ok)
            {
                Logger.Info("Map reduce for user note completed");
            }
            else
            {
                Logger.Error("Map reduce for user note failed");
            }
        }
Beispiel #5
0
        private void MapReduce()
        {
            var map = string.Format(@"
            function() {{
                var queuedTrack = this;
                var requestCount = (queuedTrack.User.toLowerCase().indexOf('{0}') == 0) ? 0 : 1;
                var autoPlayCount = (requestCount==1) ? 0 : 1;                               
                emit(queuedTrack.Track.Link, {{ requestCount: requestCount, vetoCount: queuedTrack.Vetoes.length, likeCount: queuedTrack.Likes.length, autoPlayCount: autoPlayCount,lastPlayed: Date.parse(queuedTrack.StartedPlayingDateTime),excluded: queuedTrack.Excluded, track: queuedTrack.Track}});
            }}", "autoplay");

            const string reduce   = @"        
            function(key, values) {
                var result = {requestCount: 0, vetoCount: 0, likeCount: 0, autoPlayCount: 0, lastPlayed: 0, excluded: false, track: null };

                values.forEach(function(value){               
                    result.requestCount += value.requestCount;
                    result.vetoCount += value.vetoCount;
                    result.likeCount += value.likeCount;
                    result.autoPlayCount += value.autoPlayCount;                    
                    if(result.excluded == false) result.excluded = value.excluded; //waiting until we find at least one play 
                    if (value.lastPlayed > result.lastPlayed) result.lastPlayed = value.lastPlayed;
                    if (!result.track) result.track = value.track;
                });

                return result;
            }";
            string       finalize = string.Format(@"
            function(key, value){{                
                var score =  (value.likeCount - value.vetoCount)+1;
                if (score <= 0) score = 0.001;
                score = Math.round((score * (Math.random()/{0}))*1000);                 
                return {{IsExcluded: value.excluded, Score: score, MillisecondsSinceLastPlay: Date.now()-value.lastPlayed, Track: value.track}};
            }}", 3);

            var options = new MapReduceOptionsBuilder();

            options.SetFinalize(finalize);
            options.SetOutput(MapReduceOutput.Replace(DataCollectionName));
            if (queuedTrackDataService.DataCollection.Exists())
            {
                queuedTrackDataService.DataCollection.MapReduce(map, reduce, options).GetResults();
            }
        }