我看了很多Mongo文档,但没找到如何对结果内容进行随机排序的方法。
有没有这样的功能呢?
我看了很多Mongo文档,但没找到如何对结果内容进行随机排序的方法。
有没有这样的功能呢?
function shuffle(array) {
var currentIndex = array.length
, temporaryValue
, randomIndex
;
while (0 !== currentIndex) {
randomIndex = Math.floor(Math.random() * currentIndex);
currentIndex -= 1;
temporaryValue = array[currentIndex];
array[currentIndex] = array[randomIndex];
array[randomIndex] = temporaryValue;
}
return array;
}
但是,如果你实际上在讨论洗牌大量结果的情况,例如从使用新的$out
运算符或任何集合获得的集合中,那么你可以通过使用mapReduce“作弊”。
db.collection.mapReduce(
function(){
var random = Math.floor( Math.random() * 100000 );
emit({ rand: random, id: this._id }, this );
},
function(){},
{ out: { replace: "newcollection" } }
);