我与这里的所有相关细节斌:http://jsbin.com/ribor/1/edit?js,output流星MongoDB的数据支点和更优雅的代码
但这么回答缓解这里的细节。我有这些模型的例子:
Orders = {
_id: "T487wBz7Pvzjo2QHh",
beverages: [
{
_id: "8ea26bb103efae385f80f881",
delivered: false,
name: "Wine",
units: "55"
}
],
location: "yTKWLFwSDvp3DyCkx",
locationName: "Ladies Garden",
locationNumber: "101",
timestamp: 1398393004864,
user_id: "W3Fdq36Ts2TdWxCRP",
username: "jgeezy"
};
Locations = {
_id: "yTKWLFwSDvp3DyCkx",
beverages: [
{
_id: "e5552a68266ed76895b8228a",
fillTo: "10",
name: "Wine Coolers",
orderWhen: "10",
startUnits: "10"
}
],
name: "Teen Cabana",
number: "103",
organization: "Super Happy Teens!",
vendor: false
};
我需要呈现在每个位置的表将显示每个位置的未交付订单饮料的总#某些行。我有这个功能已经写:
Template.dashboardOrders.undeliveredOrders = ->
undeliveredOrders = Orders.find({'beverages.delivered': false}, {
transform: (order) ->
order.unfilledOrders = 0
_.each order.beverages, (bev) ->
if not bev.delivered
order.unfilledOrders += 1
order
})
但是,让我通过,&时间戳排序的数组。我正在查找的输出是按照唯一位置&时间戳排序的数组。不完全确定如何到达那里,但我一直在尝试不同的地图,因为我觉得这是要走的路,但我被卡住了。任何帮助深表感谢!
BONUS另外,由于必须返回订单对象并使用+ =来递增,我的方法感觉不够好看。我觉得可能有更好的方法来做到这一点。
这是比较容易使用下划线方法'groupBy'或'groupBy',这取决于你想要什么,但我不太明白的问题。您希望按地点(即“countBy”)还是按位置和时间戳(即“groupBy”)排序的未送达饮料订单总数?他们显然将是两件不同的事情。 – richsilv