MongoDB 排序规则不适用于具有分面阶段的 Insinde 聚合



我想在使用聚合后对我的产品进行排序,在我的聚合管道中,我在$facet阶段内使用$sort。实际上,在我尝试按升序/降序对字符串字段(Name(进行排序之前,所有字段的排序都很好。

问题是排序在我的土耳其语中无法正常工作。所以我使用排序规则选项。

我正在使用C#。

通常我使用排序规则区域设置,如下面的

PipelineDefinition<BsonDocument, Model> pipeline = new BsonDocument[]
{
//some stages,
new BsonDocument().Add("$sort", new BsonDocument().Add("sortingParameter", -1)),
//some stages
};
var options = new AggregateOptions() { Collation = new Collation("tr") };
var cursor = _collection.Aggregate(pipeline, options); 
                            

它正在工作,这里没有问题。

但我的一些查询比上面的例子更复杂,比如(下面我展示了我查询的缩短的BsonDocument版本(

db.getCollection('collName').aggregate([ 
{"$match": {    // match operations  }
}, 
{"$facet": {
"product_list": [
{"$group": {"_id": { /some grouping parameters }}},
{ "$sort": { "_id.Name": -1.0 } },
{ "$project": { // some projects }} 
]}}])

对于上面的查询,我使用相同的聚合选项

var options = new AggregateOptions() { Collation = new Collation("tr") };

但排序后的结果不正确。当我试图删除$match阶段时,我不知道怎么做,但它是有效的。

那么,有没有办法解决这个问题,或者用这种查询是不可能的?

如果我使用排序规则区域设置创建集合,则查询可以正常工作,而不是在AggregateOptions中使用排序规则语言环境设置。

最新更新