【问题标题】:MongoDB Sort ArrayMongoDB 排序数组
【发布时间】:2012-05-04 21:21:00
【问题描述】:

是否可以按评论日期对我的 MongoDB 评论数组进行排序?我是否必须在我的服务器端脚本中执行此操作,而不是使用查询运算符?如果是这样,我该怎么做?

{
  "review": [
    {
      "date": "2012-05-04 21:06:58",
      "review": "The Review",
      "name": "The Persons Name",
    },
    {
      "date": "2012-09-04 21:06:58",
      "review": "The Review",
      "name": "The Persons Name",
    },
    {
      "date": "2012-02-04 21:06:58",
      "review": "The Review",
      "name": "The Persons Name",
    }
  ],
  "category": "Category 1",
  "country": "USA",
  "date": "2012-05-04 21:06:58"
}

【问题讨论】:

  • usort对评论数组排序

标签: mongodb mongodb-php mongodb-query


【解决方案1】:

由于您将 放在标签中,我假设您正在使用PHP。您可以为此创建自己的排序函数,并通过 PHP usort() 函数调用它。

function sort_date($a, $b)
{
    return (strtotime($a['date']) - strtotime($b['date']));
}

usort($reviews_array, 'sort_date');

以上代码将按日期升序对评论进行排序。

【讨论】:

  • 编写比较器的更 C-ish/懒惰的方式可能是只做 return (strtotime($a) - strtotime($b));
  • 那么我认为在 mongodb 中做这样的排序是不可能的?让我问一下,那么您认为使用这样的功能对 100 条评论进行排序或将评论与产品集合分开并制作评论集合会更快吗?
  • @cKendrick 我不是 MongoDB 专家,所以我不能说这是不可能的。我发布了这个答案作为替代解决方案。虽然如果我是你,我肯定会将评论分成另一个集合。
猜你喜欢
  • 1970-01-01
  • 2022-12-16
  • 2013-03-01
  • 2019-05-07
  • 2012-07-28
  • 1970-01-01
  • 1970-01-01
  • 2015-01-28
  • 1970-01-01
相关资源
最近更新 更多