我有一个mongodb,其中包含一个包含音乐排行榜中所有歌曲的集合。我写了一个脚本,可以输入我想要的歌曲数量,哪一年我想要随机选择一首歌曲。到目前为止一切都很好。
但是,我试图这样做,因为返回的歌曲中没有重复的歌曲,我试图通过将每首歌曲的_id值推送到数组来实现#39; s返回,然后在聚合的$ match阶段使用$ nin。
<div class="margin-check">
Something I am typing for checking the border margin
</div>
然而,虽然我收到了正确数量的歌曲,但我仍然会在该随机列表中重复播放歌曲。
如果有人可以提出建议,或者甚至为我提供更好的方法,我们将不胜感激。
答案 0 :(得分:2)
这个怎么样?
var getSongs = function(number, year, db, callback) {
var collection = db.collection('songsList');
collection.aggregate([
{
$match: { 'songYear': year }
},
{
$sample: { size: number }
}
],
function(err, charts) {
callback(charts);
});
};