先按nullsorting

我正在试图find一个集合中的文件,按他们的datesorting。 这工作,但我得到的底部date字段为null的文档,我首先要这些。

 MyModel.find({ }, null, { sort: { date: -1 } }, function(err, models) { // Models sorted with the "largest" date first and models with null dates last }); 

如果我将sorting更改为{ date: 1 }我确实得到的文档最初为null ,但顺序是相反的,这是我不想要的。

我怎样才能达到预期的行为?

不幸的是,似乎并没有什么微不足道的方法,类似于SQL的“nulls first”/“nulls last”语法。 这个function在这个Mongo bug中被提到:

https://jira.mongodb.org/browse/SERVER-153

它与自定义sortingfunction的更大特征环绕在一起。 (我真的希望这被分解成一个单独的function请求,因为我认为实现空位的第一个/最后一位应该比自定义sortingfunction更容易,仍然提供了很大的价值。)

无论如何,暂时的解决方法是除了现有查询之外,还要单独查询空值。

如何对MongoDB索引中的空值进行sorting?

 MyModel.find({ date: null }); MyModel.find({ date: { $ne: null } }).sort({ date: -1 } });