0

我有这个 Mongoose 查询结果:

[ { _id: 523ab1be60239c8120000001,
    posts: 
     [ { _id: 523ab1be60239c8120000002,
         creator: 523ab1be60239c8120000001,
         listingType: 'lease',
         title: 'My Second Listing - Made By Person 1',
         __v: 0 } ] },
  { _id: 523ab1e224bfaea520000001,
    posts: 
     [ { _id: 523ab1e224bfaea520000002,
         creator: 523ab1e224bfaea520000001,
         listingType: 'lease',
         title: 'My Second Listing - Made By Person 2',
         __v: 0 },
       { _id: 523ab865ae55497d27000001,
         creator: 523ab1e224bfaea520000001,
         listingType: 'free',
         title: 'My Third Listing - Made By Person 2',
         __v: 0 } ] } ]

我希望能够将所有内容存储posts在一个数组或对象中,以便我可以按它们的_id(时间戳)对它们进行排序并更容易地将它们显示给用户。

关于如何实现这一目标的任何想法?我正在考虑在每个帖子上做一个循环并执行某种排序算法来实现这一点,但仅仅通过“循环”这个词,它已经听起来效率低下。

4

1 回答 1

1

如果您想自己对文档进行排序,我会说使用 MongoDB 的 sort() 函数。但是,由于您想提取文档的一部分,将它们组合成一个对象并进行排序,所以有几个选项,我不确定哪个会表现最好。

如果您保持查询的原样,那么您实际上只能选择使用某种循环在应用程序端进行排序。

可能,最干净的方法是使用聚合框架。根据您的原始查询是什么,您可能可以将其转换为$match操作并首先在您的管道中使用它。然后,您应该能够通过时间戳$unwind将“帖子”数组重新组合成一个数组。 $sort$group

于 2013-09-19T19:53:44.553 回答