mongodb子文档排序的问题

 雅俊建安义琬 发布于 2022-10-25 01:35
  • php
  • Array(
        [id] => 00008
        [game] => Array
            (
                [0] => Array
                    (
                        [gid] => 02569
                        [date] => 1363583244
                    )
    
                [1] => Array
                    (
                        [gid] => 04001
                        [date] => 1363339740
                    )
            )
    )
    Array(
        [id] => 00010
        [game] => Array
            (
                [0] => Array
                    (
                        [gid] => 02569
                        [date] => 1363583244
                    )
    
                [1] => Array
                    (
                        [gid] => 04028
                        [date] => 1363889740
                    )
            )
    )

    上面是众多结果当中的2个。我现在的需求是从所有结果当中找到gid = 02569的,并且按照对应的date进行DESC排序

    2 个回答
    • 你要把什么排序呢?整个doc? 还是doc.game?就是说是不是只看game这一级的?

      如果你要把子文档弄出来排序,用aggregation framework就好了。但是应该在楼上的加个unwind,而且sort的key也不对,应该是game.date吧。

      php的aggregation framework 文档: http://www.php.net/manual/en/mongocollection.aggregate.php

      2022-10-26 14:05 回答
    • 类似这样使用aggregate框架来实现(仅供参考思路,未测试)。mongodb 2.2+可用。

      db.xxx.aggregate([
          {
              $match: {'game.gid': 02569}
          },
          {
              $sort: {$date: -1}
          }
      ])
      2022-10-26 14:06 回答
    撰写答案
    今天,你开发时遇到什么问题呢?
    立即提问
    热门标签
    PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
    Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有