Javascript 在meteorjs应用程序&;中从我的收藏中删除重复项&;渲染每个玩家最近的分数
我正在开发一个Meteorjs应用程序,它在后端使用MongoDB。在我的收藏中,有许多重复的数据,如(仅举一个例子) 我想将所有这些集合复制到一个数组中,删除重复的名字,只保存每个玩家的名字和最近的分数,例如Javascript 在meteorjs应用程序&;中从我的收藏中删除重复项&;渲染每个玩家最近的分数,javascript,mongodb,meteor,collections,Javascript,Mongodb,Meteor,Collections,我正在开发一个Meteorjs应用程序,它在后端使用MongoDB。在我的收藏中,有许多重复的数据,如(仅举一个例子) 我想将所有这些集合复制到一个数组中,删除重复的名字,只保存每个玩家的名字和最近的分数,例如 {name:'A',score: 2, date: 4456546} {name:'B',score: 2, date: 4456546} {name:'C',score: 2, date: 4456546} 为此,我尝试使用update方法$puch,但不起作用 你知道怎么解决这个问
{name:'A',score: 2, date: 4456546}
{name:'B',score: 2, date: 4456546}
{name:'C',score: 2, date: 4456546}
为此,我尝试使用update方法$puch,但不起作用
你知道怎么解决这个问题吗??
thak’s help不完全清楚您想做什么,但您可以使用下划线来查找唯一的值。在下面的示例中,我使用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}]
您必须自己处理更新数据库的问题。最好先做个备份
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}]