如何在mongodb中对文档进行排序,以便最后显示空值

时间:2019-02-25 14:41:28

标签: mongodb aggregation-framework

让我们说我的mongo文档如下:

{
  _id: "some _id",
  name: "some name",
  type: "A" | "B" | "C" | or it may be null
}

当我致电db.getCollection('mycollection').find().sort({ type: -1 })时,我首先使用type: null获取文档,因为数据按规范类型排序,其中null的规范值比数字/字符串的规范值低

是否有形成查询的方法,以便最后出现空值?

我发现了这个问题How can I sort into that nulls are last ordered in mongodb?,但建议使用聚合并添加对我来说似乎不太好的“假”值。

如果在排序标准不为null的排序文档和文档为null的文档形成面,然后对两个数组进行合并,则使用聚合可能会起作用,但是当排序标准不止一个时,会变得复杂。

1 个答案:

答案 0 :(得分:1)

您可以使用$type运算符来获取字段类型(nullstring),然后按照字段类型加上您的字段来获取$sort,请尝试: / p>

db.col.aggregate([
    { $addFields: { fieldType: { $type: "$type" } } },
    { $sort: { fieldType: -1, type: 1 } },
    { $project: { "fieldType": 0 } }
])