我一直在尝试寻找在 mongodb 中对文档进行排序的方法,以便空值对于我正在使用的智能分页始终是最后一个
任何人都可以用猫鼬来完成吗?
var query = Product.find({}).sort({
price: sortOrder,
});
您可以使用聚合,并创建一个临时字段(isNull)来检查是否sortOrder
为空。然后你只需要排序{ $sort: { isNull: -1, sortOrder: 1 }}
var query = Product.aggregate([
{
$project: {
...
sortOrder: '$sortOrder',
isNull: { $toBool: { $ifNull: [ '$posts.pageOrder', 0 ] } },
}
},
{ $sort: { isNull: -1, pageOrder: 1 } }
])
在不同的情况下,当您想通过 update_at(新 -> 旧)在末尾对 null 进行排序时,您可以像这样使用它:
var query = Product.aggregate([
{
$project: {
...
sortOrder: '$sortOrder',
isNull: { $toBool: { $ifNull: [ '$posts.pageOrder', 0 ] } },
updated_at: '$updated_at'
}
},
{ $sort: { isNull: -1, pageOrder: 1, updated_at: -1 } }
])