我正在尝试找出如何最好地从 Mongo 集合中获取一组 10 个随机项目。我的计划是在 Redis 中存储一组 Mongo ID,使用 Redis SRANDMEMBER 命令获取 10 个随机 ID,然后从 Mongo 集合中获取它们。
由于我使用的是 Node,我无法使用 SRANDMEMBER 10,因为节点“redis”包不接受可选的第二个参数。
我真正绊倒的地方是如何以异步友好的方式做到这一点。我曾尝试使用节点异步库提供的几个工具,例如 Waterfall 和 While,但 Redis 调用总是晚于数据。
编辑#2:
为了响应下面的帮助,我将我的功能改进如下:
client.send_command("SRANDMEMBER", ["album_id_set", "10"], function(err, results) {
if (err) console.log('Redis error: ' + err);
Album.find({
'_id' : { $in: results }
}, function(err, result){
if (err) console.log('Mongo error: ' + err);
response.json(result);
});
});