如何使用PHP对嵌套的MongoDB集合进行排序

时间:2016-08-29 05:08:00

标签: mongodb php sorting

[
    {
        "trip": [
            {
              "destination": "Tokyo",
              "time": 8.56,
              "price": 80
            },
            {
              "destination": "Paris",
              "time": 2.36,
              "price": 9
            },
            {
              "destination": "Goa",
              "time": 4.56,
              "price": 30
            }
        ]
    },
    {
        "trip": [
            {
              "destination": "Tokyo",
              "time": 6.26,
              "price": 23
            },
            {
              "destination": "Paris",
              "time": 7.46,
              "price": 45
            },
            {
              "destination": "Goa",
              "time": 8.98,
              "price": 39
            }
        ]
    }
]

我想对上面的文档进行排序,该文档存储在MongoDB中,我正在使用PHP。

情景:在前端,我有一个下拉列表,我正在显示旅行(即东京,巴黎,果阿),我有一个标题为" Price&#的按钮34;显示从最低价到最高价的行程。

问题

  1. 当我选择时,让我们说巴黎和我点击价格按钮,上面的文件应按价格排序(从最低到最高)。

  2. 排序应该应用于目的地为巴黎的对象。

  3. 此文档最高可达25/28 MB(此处我只是展示了我的文档的小预览)。

  4. 我尝试了什么

    db.testCollection.find({
        'trip': { 
            $elemMatch: { 
                'destination':'Paris'
                } 
            }
        }).sort({
            "trip.price":1
        })
    

    还有更多。

    任何小帮助都非常感谢,谢谢。

1 个答案:

答案 0 :(得分:0)

试试这个:

$collection = $db->createCollection("emp_details");

$sort = array('col_name' => 1);   // you can change this array on the behalf of some condition like:

if(something)
{
    $sort = array('col_name' => 1);   // asc
}
else
{
    $sort = array('col_name' => -1);   // desc
}

$resultSet  = $collection->find()->sort($sort);

这适合我。