使用$ nin和$ sample与mongdb聚合

时间:2016-04-11 15:06:25

标签: javascript mongodb aggregation-framework

我有一个mongodb,其中包含一个包含音乐排行榜中所有歌曲的集合。我写了一个脚本,可以输入我想要的歌曲数量,哪一年我想要随机选择一首歌曲。到目前为止一切都很好。

但是,我试图这样做,因为返回的歌曲中没有重复的歌曲,我试图通过将每首歌曲的_id值推送到数组来实现#39; s返回,然后在聚合的$ match阶段使用$ nin。

<div class="margin-check">
Something I am typing for checking the border margin
</div>

然而,虽然我收到了正确数量的歌曲,但我仍然会在该随机列表中重复播放歌曲。

如果有人可以提出建议,或者甚至为我提供更好的方法,我们将不胜感激。

1 个答案:

答案 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);
  });
};