Mongo 上按日期字符串(升序)排序

2023-12-26

我有一个数据库,其中的日期列格式为 dd/mm/yyyy,我想按日期升序排序。

$cursor = $collection->find($filter)->sort(array('date' => 1, 'tripID' => 1));

日期是一个字符串,我也在 tripID 上进行过滤,但这方面正在工作。问题是目前我得到:

01/01/2014
01/02/2014
02/01/2014
02/02/2014

我想要的是:

01/01/2014
02/01/2014
01/02/2014
02/02/2014

是否可以使用查询来实现此目的,还是需要在应用程序中完成?


假设我们有您问题中给出的列表

> db.dates.insertMany([{ "date": "01/01/2014" },
    { "date": "01/02/2014" },
    { "date": "02/01/2014" },
    { "date": "02/02/2014" }])
{
        "acknowledged" : true,
        "insertedIds" : [
                ObjectId("5a314eae330cc13d0c9b10c4"),
                ObjectId("5a314eae330cc13d0c9b10c5"),
                ObjectId("5a314eae330cc13d0c9b10c6"),
                ObjectId("5a314eae330cc13d0c9b10c7")
        ]
}

在 MongoDB 3.6 中,我们可以使用聚合框架并使用$dateFromString (https://docs.mongodb.com/manual/reference/operator/aggregation/dateFromString/ https://docs.mongodb.com/manual/reference/operator/aggregation/dateFromString/) 管道运算符将字符串日期转换为日期,然后对值进行排序:

> db.dates.aggregate([
    { "$project" : { "date" : { "$dateFromString" : { "dateString" : "$date"} } } },
    { "$sort" : { "date" : 1 } }
    ])
{ "_id" : ObjectId("5a314eae330cc13d0c9b10c4"), "date" : ISODate("2014-01-01T00:00:00Z") }
{ "_id" : ObjectId("5a314eae330cc13d0c9b10c5"), "date" : ISODate("2014-01-02T00:00:00Z") }
{ "_id" : ObjectId("5a314eae330cc13d0c9b10c6"), "date" : ISODate("2014-02-01T00:00:00Z") }
{ "_id" : ObjectId("5a314eae330cc13d0c9b10c7"), "date" : ISODate("2014-02-02T00:00:00Z") }

在 MongoDB 3.6 之前,有一种解决方法可以将字符串转换为词汇字符串日期:

> db.dates.aggregate([
    { "$project" : {
        "date" : {
            "$let" : {
                "vars" : { "parts":{ "$split" : [ "$date", "/" ] } },
                "in" : {
                    "$concat" : [
                        { "$arrayElemAt" : [ "$$parts" , 2 ] },
                        "-",
                        { "$arrayElemAt" : [ "$$parts", 1 ] },
                        "-",
                        { "$arrayElemAt" : [ "$$parts", 0 ] } ]
                    }
                }
            }
        }
    },
    { "$sort" : { "date" : 1 } }
])

{ "_id" : ObjectId("5a314eae330cc13d0c9b10c4"), "date" : "2014-01-01" }
{ "_id" : ObjectId("5a314eae330cc13d0c9b10c6"), "date" : "2014-01-02" }
{ "_id" : ObjectId("5a314eae330cc13d0c9b10c5"), "date" : "2014-02-01" }
{ "_id" : ObjectId("5a314eae330cc13d0c9b10c7"), "date" : "2014-02-02" }

我知道这是在 javascript 中,你提到它是在 php 中,但实际上是相同的,请查看 php 文档(http://php.net/manual/en/mongocollection.aggregate.php http://php.net/manual/en/mongocollection.aggregate.php)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Mongo 上按日期字符串(升序)排序 的相关文章

  • Laravel Valet 不工作。 127.0.0.1 连接被拒绝

    试图让代客泊车设置正常工作 当访问 127 0 0 1 时 连接被拒绝 这是我在访问 dev 站点设置之一时收到的消息 我已经确保 apache 已停止 并且一直在谷歌上搜索所有地方 但无法找到解决方案 有没有人遇到过这个或对下一步尝试什么
  • 根据产品变体术语将收件人添加到 Woocommerce 电子邮件通知

    我创建了一个 Woocommerce 插件并要求它做两件事 根据购物车中的产品变体 向特定电子邮件地址发送通知消息 电子邮件必须仅包含相关产品 不得包含其他属性的产品 例如 产品 A 具有名为 Chef 的属性 其中 Chef one 和
  • PHP 生成文件供下载然后重定向

    我有一个 PHP 应用程序 它创建一个 CSV 文件 强制使用标头下载该文件 这是代码的相关部分 header Content Type application csv header Content length filesize NewF
  • 是否可以将 mongodb 与 sqlalchemy 一起使用?

    我在中找不到任何有关连接 mongodb 的信息sqlalchemy 的文档 http docs sqlalchemy org en latest 和谷歌搜索 是否可以将 mongodb 与 sqlalchemy 一起使用 谢谢 根据 sq
  • 如何在猫鼬中使用聚合

    如何在 mongoose 中定义以下 MongoDB 聚合查询 db contacts aggregate group id code Code name Name 查询的目的是获取不同代码和名称的列表 我当前的模型代码是 use stri
  • 使用 shell_exec 将 PHP 转换为 Powershell

    如果我运行 output shell exec powershell get service dhcp 我得到了 dhcp 服务的完美输出 显示正在运行 但如果我运行 output shell exec powershell get use
  • Doctrine 不会在 MySQL 中生成跨数据库外键约束

    我有两个表 db1 Contact 和 db2 Recipient 每个收件人都应该是联系人 因此我在 db1 Contact ContactID 字段上的两个表之间设置了外键 我在 Recipient php 中使用以下注释表示这一点 O
  • PHP 时区问题 |英国夏令时和格林威治标准时间

    我开发了一个应用程序 它记录某些记录的修改和创建时间 所以基本上我们使用time 保存更改时进行记录的功能 我在英国 所以我的时区必须是 GMT 然而在英国 我们使用夏令时 所以在夏天我们不再使用格林尼治标准时间 而是使用英国夏令时 我如何
  • 使用 chr + rand 生成随机字符 (A-Z)

    我使用以下命令生成 A Z 的随机字符 但它偶尔会生成 符号 知道如何防止这种情况吗 也许字符范围不正确 letter chr 64 rand 0 26 用这个就更方便了 大写 letter chr rand 65 90 小写 letter
  • Graph API / FQL 不返回页面的所有事件

    脸书页面 http facebook com getwellgabby events http facebook com getwellgabby events 目前有 8 个活动 我能看到他们 非管理员可以看到它们并可以加入它们 但是 当
  • 如何在 Laravel 5.3 中进行自定义身份验证

    我在 Laravel 5 3 自定义身份验证中遇到问题 希望在检查时使用我自己的函数或页面Auth check 它返回false 这是用户控制器 namespace App Http Controllers use App User use
  • 如何区分两个同名的多选列表

    对于我正在构建的系统 我需要查看第一个列表中出现了哪些选项 通过 POST 请求 以及第二个列表中出现了哪些选项
  • drupal 7 将实际内容存储在数据库中的哪里?

    我打开了 drupal 7 的数据库并在表中查找node node revisions and node types并且找不到 drupal 存储实际的位置body节点 内容 的 有人有线索吗 哦 我刚刚找到了 在 D7 中 他们实现了字段
  • PHP:如何将信息返回到等待的脚本并继续处理

    假设有两个脚本Requester php和Provider php Requester需要Provider进行处理并向其发出http请求 Provider php data data 在这种情况下 Provider 很快就找到了答案 但为了
  • 如何在 mongodb-native findAndModify 中使用变量作为字段名称?

    在使用 mongodb native 驱动程序的这段代码中 我想增加在单独变量中指定的字段的值 问题在于 在这种情况下 inc 子句中的字段名称将是 变量 而不是变量的内容 在查询部分中 所选变量按预期工作并找到正确的 ID var sel
  • https 重定向 laravel .htaccess 之后删除 /public

    我有一个 Laravel 页面部署在共享主机中 当我强制 http 请求重定向到 https 时 url 包含 public 我的根 htaccess 是 RewriteEngine on RewriteCond REQUEST URI p
  • Laravel Redis 配置

    我目前正在使用 Laravel 和 Redis 创建一个应用程序 几乎一切都工作正常 我按照文档中的说明扩展了身份验证 用户可以订阅 登录 注销 我可以创建内容 所有内容都存储在 Redis 中 但我有一个问题 我无法运行 php arti
  • Laravel 5:在控制台内核的 Schedule() 函数中使用 Cache:: 或 DB::

    我正在尝试以不同的用户配置的时间间隔在 Laravel 5 中运行 Artisan 控制台命令 我已经构建了控制台命令 并拥有一个包含 运行频率 配置值的数据库 具有 Eloquent 模型 内schedule 的函数App Console
  • 动态重新定义 PHP 类函数?

    我试图弄清楚如何动态导入大量 PHP 类函数 例如 class Entity public function construct type require once type functions php person new Entity
  • snappy wkhtmltopdf 包装器将生成的 html 文件发送到浏览器

    我像鼹鼠一样用谷歌搜索 但找不到正确的方法 我正在使用 WKHTMLTOPDF Wrapper Snappy 创建 PDF 如何将使用generateFromHtml方法生成的pdf直接发送到浏览器 这就是我想做的 header Conte

随机推荐

  • Windows Phone 8.1 上使用 .resx 资源时出现 MissingManifestResourceException

    我正在开发一个也针对 Android Xamarin 的 Windows Phone 8 1 应用程序 正如我在 PCL 上添加字符串资源 resx 并在启动器项目中引用它们以在我的视图中使用它一样 这一切在 WP 8 1 silverli
  • MySQL 中的字符串连接

    我正在使用 MySQL 和 MySQL Workbench 5 2 CE 当我尝试连接两列时 last name and first name 它不起作用 select first name last name as Name from t
  • + 运算符什么时候比 StringBuilder 更快? [复制]

    这个问题在这里已经有答案了 过去 我一直相信你应该使用StringBuilder and append String 当用变量构建字符串时 而不是string split i 在什么情况下这是准确的 我问是因为通常情况下 如果我要写以下内容
  • 直接从无窗口 Linux 终端启动 OpenGL 应用程序

    究竟如何让 OpenGL 应用程序直接从终端 Ubuntu Server 9 04 全屏运行 我在我的服务器上开发了一个用于视觉诊断的应用程序 但是 我不完全确定让它在无窗口环境中运行的最佳方法 理想情况下 我会运行我的程序 visuald
  • 在 TFS 中的解决方案之间共享代码 [关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 我有几个不同的应用程序 我需要在它们之间共享代码以减少维护 我尝试在 stackoverflow 和 web 上阅读大量
  • 提取两个字符串之间不同的字符

    我用过adist计算两个字符串之间不同的字符数 a lt Happy day b lt Tappy Pay adist a b result 2 现在我想提取那些不同的字符 在我的示例中 我想获取字符串 Hd or TP 没关系 我试着看一
  • 通过 Gmail 发送电子邮件时出现错误

    在这里 我尝试使用 gmail 发送邮件 但出现以下错误 javax mail AuthenticationFailedException 534 5 7 14
  • 在 Laravel 4 中显示自定义验证的错误消息

    我通过创建一个类创建了一个自定义错误函数
  • 未定义参数的性能损失

    我经常在函数中使用可选参数 但一些测试显示它们在 Firefox 和 safari 中性能受到巨大影响 70 95 奇怪的是 如果我传入文字值不明确的那么就没有处罚 这里可能发生什么 我不会认为这是一个作用域链问题 因为它们本质上是函数的本
  • 正则表达式也匹配重音字符

    我有以下 PHP 代码 search foo bar que search string str replace search text This is my foo text with qu and other accented char
  • 如何以只读方式打开 Eclipse 项目?

    有谁知道有没有办法在 Eclipse 中以只读模式打开项目 如果打开了很多类似的项目 很容易对错误的项目进行更改 当您从前一个项目创建另一个实例时 将项目置于只读模式非常有用 因此 您复制旧项目中的所有文件 然后在新实例中进行更改 错误地编
  • Primefaces 数据表的列标题中的工具提示

    在基于的应用程序中JSF 2 1 and Primefaces 6 0 我正在尝试向数据表的标题添加工具提示 在我当前的解决方案中 仅当将鼠标精确指向文本标题 Projekttyp 时才会出现工具提示 我需要每当鼠标指针位于列标题中时就显示
  • 使用 jQuery 和 iFrame 下载大文件 - 需要文件就绪事件,以便我可以隐藏加载 gif

    我正在使用 jQuery 下载一些需要一些时间才能创建的文件 因此我显示了一个加载 gif 来告诉用户要有耐心 但问题是 加载 gif 当前显示和隐藏都在一瞬间 有没有办法让我在下载完成后隐藏加载 gif 并且用户在屏幕上弹出 保存文件 窗
  • Vaadin 为版本控制添加什么

    我们正在使用 Vaadin 14 我们应该将项目中的哪些文件夹提交到版本控制 文件夹node modules非常大 非常耗时 我们应该提交这个吗 node modules目录不应该加入版本控制 package json and packag
  • 通过 Facebook 的图 api 发布状态

    在 PHP 中 我尝试使用图形 api 将状态发布到我们的 Facebook 粉丝页面 尽管遵循 facebook 给出的说明 但以下代码似乎没有更新状态 这是代码 xPost access token key xPost message
  • Android:如何通过xml制作看起来像光环的Circle

    我正在尝试使用带有光环的 xml 制作一个圆圈 光环就像从中心的绿色开始 绿色不断褪色 最后在边缘变得透明 该怎么办呢 我正在尝试使用以下内容
  • 如何在限制 ssh 的防火墙后面通过 https 访问 heroku git

    Heroku 部署在我家里就像一个魅力 但我的办公室网络限制 ssh 这会阻止命令 git push heroku master 有没有办法使用 heroku git 存储库的 https url 来推送我的应用程序 您只能通过 ssh 推
  • @IdClass JPA 注解

    这是我的一个实体的复合主键 public class GroupMembershipPK implements Serializable private static final long serialVersionUID 78164338
  • 切片如何包含自身?

    我正在尝试使用 The Go 编程语言 来学习 Golang 并且我已经到达了关于切片的部分 它们在数组和切片之间进行比较 因为两个数组可以与 其中两片不能 正文如下 operator for arrays of strings it ma
  • Mongo 上按日期字符串(升序)排序

    我有一个数据库 其中的日期列格式为 dd mm yyyy 我想按日期升序排序 cursor collection gt find filter gt sort array date gt 1 tripID gt 1 日期是一个字符串 我也在