所以我在聚合一些事件,它们有一个字段startTime。我需要按照该字段中的数字对这些事件进行排序--从低到高,但有些事件有0。我需要把那些有0的放在任何数字的后面。所以看起来是这样的: DB数据: 0,0,0,0,5,10,20,一个想要的结果是: 5,10,20,0,0,0,0,0
当然,结构要复杂一点,但这应该能说明问题所在。这就是现在的样子:
sortBy = { "el.endingSoon": 1 };
谢谢!
发布于 2021-09-30 13:54:10
在Mongo中没有“自定义”排序函数,您可以做的是创建一个临时字段并按该字段排序,如下所示:
db.collection.aggregate([
{
$addFields: {
tmpField: {
$cond: [
{
$eq: [
0,
"$startTime"
]
},
1000000000,// largest possible value.
"$startTime"
]
}
}
},
{
$sort: {
tmpField: 1
}
},
{
$project: {
tmpField: 0
}
}
])https://stackoverflow.com/questions/69393023
复制相似问题