"use strict"; var async = require('async'); module.exports = function(db, module) { var helpers = module.helpers.mongo; module.sortedSetAdd = function(key, score, value, callback) { callback = callback || helpers.noop; if (!key) { return callback(); } if (Array.isArray(score) && Array.isArray(value)) { return sortedSetAddBulk(key, score, value, callback); } value = helpers.valueToString(value); var data = { score: parseInt(score, 10), value: value }; db.collection('objects').update({_key: key, value: value}, {$set: data}, {upsert:true, w: 1}, function(err) { callback(err); }); }; function sortedSetAddBulk(key, scores, values, callback) { if (scores.length !== values.length) { return callback(new Error('[[error:invalid-data]]')); } values = values.map(helpers.valueToString); var bulk = db.collection('objects').initializeUnorderedBulkOp(); for(var i=0; i 0) { pipeline.push({ $limit: limit }); } pipeline.push({ $project: { _id: 0, value: '$_id.value' }}); db.collection('objects').aggregate(pipeline, function(err, data) { if (err || !data) { return callback(err); } data = data.map(function(item) { return item.value; }); callback(null, data); }); } };