Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/227.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在新的mongo db查询命令中按字母顺序排序_Php_Mongodb - Fatal编程技术网

Php 在新的mongo db查询命令中按字母顺序排序

Php 在新的mongo db查询命令中按字母顺序排序,php,mongodb,Php,Mongodb,我尝试使用命令聚合管道使用新的MongoDB管理器按字母顺序排序 以下是我的代码: $manager = new MongoDB\Driver\Manager("mongodb://localhost:27017"); $pipeline = [ [ '$match' => ['listingStatus' => ''] ], [ '$group' => ['_id' => '$listingParticipants.em

我尝试使用命令聚合管道使用新的MongoDB管理器按字母顺序排序

以下是我的代码:

$manager = new MongoDB\Driver\Manager("mongodb://localhost:27017");

$pipeline = [
            [ '$match' => ['listingStatus' => ''] ],
            [ '$group' => ['_id' => '$listingParticipants.email'] ],
            [ '$limit' => 10 ],
            [ '$skip' => 0],
            [ '$sort' => ['listingParticipants.firstName' => 1]]
        ];

       $aggregate = new \MongoDB\Driver\Command([
           'aggregate' => 'Test_collection',
           'pipeline' => $pipeline,
           'cursor' => new stdClass
        ]);

       $cursor = $manager->executeCommand('test_database', $aggregate);

在上面的代码中,我对字符串数据类型名称字段使用sort in pipeline,但它不能正常工作,所以请编写我的代码来解决这个问题

这里的问题是,在
$group
阶段中,没有用于排序的名称字段

最好是在
组之后
排序

添加
列出参与者。名字
在$group阶段

另请注意:

Mongo无法区分大小写进行排序

意思——对于像Abcd、Abcd、Abcd、Bacd、bxyz这样的名称

排序结果将为(如果按升序排序)

Abcd,Abcd,Bacd,Abcd,bxyz

我建议您使用
$toUpper
$toLower
运算符为名称添加一个新字段
sortName

sortName: {$toUpper: "$name"}

然后使用
sortName
进行排序

您在分组后进行排序,我认为您没有得到listingParticipants.firstName键直到$sort aggregate pipeline这就是为什么它没有排序谢谢。。它起作用了。我在分组前应用排序,所以在这种情况下它是有效的。