在meteorjs应用程序中删除我的收藏中重复项&&渲染每个玩家的最新得分



我正在开发一个Meteorjs应用程序,该应用程序在后端使用MongoDB。在我的收集中有很多重复的数据,比如(只是一个例子)

{name:'A',score: 2, date: 4456546}
{name:'A',score:33, date:3453454}
{name:'A',score:34, date: 3453}
{name:'A',score:0, date: 12334}
{name:'B',score: 2, date: 4456546}
{name:'B',score:33, date:3453454}
{name:'B',score:34, date: 3453}
{name:'B',score:0, date: 12334}
{name:'C',score: 2, date: 4456546}
{name:'C',score:33, date:3453454}
{name:'C',score:34, date: 3453}
{name:'C',score:0, date: 12334}

我想把所有这些集合复制到一个数组上,删除重复的名字,只保存每个玩家的名字和最近的分数,比如

{name:'A',score: 2, date: 4456546}
{name:'B',score: 2, date: 4456546}
{name:'C',score: 2, date: 4456546}

为此,我尝试使用update方法$puch,但不起作用;

你知道怎么解决这个问题吗??thak的帮助

虽然不完全清楚您要做什么,但您可以使用下划线的uniq函数来查找唯一值。在下面的示例中,我使用sort对日期最高到最低的值进行排序。接下来,我将uniq函数与iteratee函数一起使用,后者将名称作为值返回以检查唯一性。

var allScores = [
    {name:'A',score: 2, date: 4456546},
    {name:'A',score:33, date:3453454},
    {name:'A',score:34, date: 3453},
    {name:'A',score:0, date: 12334},
    {name:'B',score:34, date: 3453},
    {name:'B',score:0, date: 12334},
    {name:'B',score: 2, date: 4456546},
    {name:'B',score:33, date:3453454},
    {name:'C',score:33, date:3453454},
    {name:'C',score: 2, date: 4456546},
    {name:'C',score:34, date: 3453},
    {name:'C',score:0, date: 12334}
];
var latestScores = _(allScores).chain().sort(function(a,b){return (b.date - a.date)}).uniq(function (x){ return x.name }).value();
// latestScores equals [{name:'A',score: 2, date: 4456546},{name:'B',score: 2, date: 4456546},{name:'C',score: 2, date: 4456546}]

你必须自己更新数据库。最好先备份。

最新更新