Php 在新的mongo db查询命令中按字母顺序排序
我尝试使用命令聚合管道使用新的MongoDB管理器按字母顺序排序 以下是我的代码:Php 在新的mongo db查询命令中按字母顺序排序,php,mongodb,Php,Mongodb,我尝试使用命令聚合管道使用新的MongoDB管理器按字母顺序排序 以下是我的代码: $manager = new MongoDB\Driver\Manager("mongodb://localhost:27017"); $pipeline = [ [ '$match' => ['listingStatus' => ''] ], [ '$group' => ['_id' => '$listingParticipants.em
$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这就是为什么它没有排序谢谢。。它起作用了。我在分组前应用排序,所以在这种情况下它是有效的。