Meteor + Mongo(2.6.7)按排序顺序将文档推送到数组

时间:2015-11-17 01:40:26

标签: mongodb meteor

我有一个带有数组的文档(应该是非规范化的,但不能是因为被动事件会在客户端启动时“添加”太多次)。

我需要能够将文档推送到该数组,并将其保持在排序(或粗略排序)的顺序中。我试过这个问题:

{ $push: {
   'events': {
       $each: [{'id': new Mongo.ObjectID, 'start':startDate,...}],
       $sort: {'start': 1},
       $slice: -1
    }
}

但是它需要$slice运算符出现...我不想删除所有旧数据,我只是希望能够将数据插入到数组中,然后让该数组为排序,以便我可以稍后查询数组并说“切片大于或等于时间X”。

这可能吗?

编辑:

这个mongo聚合查询几乎可以工作,除了结果数组中的一个级别的文档,但聚合不是被动的(可能是因为它们是昂贵的计算)。以下是汇总查询,如果有人可以看到如何将其翻译为查找,或者为什么无法翻译:

Coll.aggregate({$unwind: '$events'},
     {$sort: {'events.start':1}},
     {$match: {'events.start': {$gte: new Date()}}},
     {$group: {_id: '$_id', 'events': {$push: '$events'} }})

0 个答案:

没有答案