在 MongoDB 异步中随机选择行
Random selection of rows in MongoDB async
所以我已经阅读了其他关于如何选择随机行的帖子,但 none 对我有用。
Random record from MongoDB
和 How to find random records in mongodb 都建议不再编译的过时解决方案。
向我的数据库添加额外的随机字段不是一个选项。
我想出了以下代码,但它也不起作用。
exports.randomX = function(req, res)
{
var x = req.params.x;
db.collection('table', function(err, collection) {
collection.count(function(err, count) {
var r;
var arr = [];
for(var i=1; i<=x; i++)
{
r = Math.floor(Math.random() * count);
collection.find().limit(1).skip(r).toArray(function(err, items)
{
arr.push(items[0]);
if(arr.length === x)
res.send(arr);
});
}
});
});
}
不确定这是否是您唯一的问题,但 x
将是一个字符串,因此如果您想将它与 arr.length
进行比较,您应该将其解析为数字或只使用 ==
而不是 ===
.
exports.randomX = function(req, res)
{
var x = req.params.x;
db.collection('table', function(err, collection) {
collection.count(function(err, count) {
var r;
var arr = [];
for(var i=1; i<=x; i++)
{
r = Math.floor(Math.random() * count);
collection.find().limit(1).skip(r).toArray(function(err, items)
{
arr.push(items[0]);
if(arr.length == x)
res.send(arr);
});
}
});
});
}
所以我已经阅读了其他关于如何选择随机行的帖子,但 none 对我有用。
Random record from MongoDB 和 How to find random records in mongodb 都建议不再编译的过时解决方案。
向我的数据库添加额外的随机字段不是一个选项。
我想出了以下代码,但它也不起作用。
exports.randomX = function(req, res)
{
var x = req.params.x;
db.collection('table', function(err, collection) {
collection.count(function(err, count) {
var r;
var arr = [];
for(var i=1; i<=x; i++)
{
r = Math.floor(Math.random() * count);
collection.find().limit(1).skip(r).toArray(function(err, items)
{
arr.push(items[0]);
if(arr.length === x)
res.send(arr);
});
}
});
});
}
不确定这是否是您唯一的问题,但 x
将是一个字符串,因此如果您想将它与 arr.length
进行比较,您应该将其解析为数字或只使用 ==
而不是 ===
.
exports.randomX = function(req, res)
{
var x = req.params.x;
db.collection('table', function(err, collection) {
collection.count(function(err, count) {
var r;
var arr = [];
for(var i=1; i<=x; i++)
{
r = Math.floor(Math.random() * count);
collection.find().limit(1).skip(r).toArray(function(err, items)
{
arr.push(items[0]);
if(arr.length == x)
res.send(arr);
});
}
});
});
}