在MongoDB中最后排序Null值

时间:2016-12-15 00:43:36

标签: javascript mongodb

我正在使用以下查询根据名为sortIndex的字段以升序填充MongoDB中的项目。

有时虽然DB中的项目没有sortIndex字段。使用以下查询,具有null sortIndex的项目显示在顶部,我想知道如何让它们显示在底部。我需要两个查询吗?还是有办法使用一个查询?

.populate({path: 'slides', options: { sort: { 'sortIndex': 'ascending' } } })

2 个答案:

答案 0 :(得分:0)

重复:How to keep null values at the end of sorting in Mongoose?

无论如何发布相同的解决方案......

我不确定解决方案即将发言。我无法测试这个,因为我现在没有设置mongo数据库,但我认为您可以使用<collection>.aggregate以及$project$sort来实现此目的。

示例代码:

db.inventory.aggregate(
   [
      {
         $project: {
            item: 1,
            description: { $ifNull: [ "$amount", -1*(<mimimum value>)* ] }
         }
      },
      { 
         $sort : { 
           amount : (-1 or 1 depending on the order you want)
         }
      }
   ]
)

希望这会有所帮助!!

答案 1 :(得分:-1)

您可以执行以下操作:

db.collection.aggregate([
    { $addFields: 
        { 
            hasValue : { $cond: [ { $eq: [ "$value", null ] }, 2, 1 ] },
        }
    },
])
.sort({hasValue : 1, value : 1});