diff --git a/src/database/mongo/sorted.js b/src/database/mongo/sorted.js index 5401b7f121..67af8adf19 100644 --- a/src/database/mongo/sorted.js +++ b/src/database/mongo/sorted.js @@ -159,32 +159,7 @@ module.exports = function (db, module) { if (!Array.isArray(keys) || !keys.length) { return callback(null, []); } - var pipeline = [ - { $match: { _key: { $in: keys } } }, - { $group: { _id: { _key: '$_key' }, count: { $sum: 1 } } }, - { $project: { _id: 1, count: '$count' } }, - ]; - db.collection('objects').aggregate(pipeline).toArray(function (err, results) { - if (err) { - return callback(err); - } - - if (!Array.isArray(results)) { - results = []; - } - - var map = {}; - results.forEach(function (item) { - if (item && item._id._key) { - map[item._id._key] = item.count; - } - }); - - results = keys.map(function (key) { - return map[key] || 0; - }); - callback(null, results); - }); + async.map(keys, module.sortedSetCard, callback); }; module.sortedSetRank = function (key, value, callback) { diff --git a/src/database/mongo/sorted/union.js b/src/database/mongo/sorted/union.js index 1f5b73bc71..5e350c1266 100644 --- a/src/database/mongo/sorted/union.js +++ b/src/database/mongo/sorted/union.js @@ -6,16 +6,12 @@ module.exports = function (db, module) { return callback(null, 0); } - var pipeline = [ + db.collection('objects').aggregate([ { $match: { _key: { $in: keys } } }, { $group: { _id: { value: '$value' } } }, { $group: { _id: null, count: { $sum: 1 } } }, - ]; - - var project = { _id: 0, count: '$count' }; - pipeline.push({ $project: project }); - - db.collection('objects').aggregate(pipeline).toArray(function (err, data) { + { $project: { _id: 0, count: '$count' } }, + ]).toArray(function (err, data) { callback(err, Array.isArray(data) && data.length ? data[0].count : 0); }); };