Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 按日期排序,首先为空_Node.js_Mongodb_Mongoose - Fatal编程技术网

Node.js 按日期排序,首先为空

Node.js 按日期排序,首先为空,node.js,mongodb,mongoose,Node.js,Mongodb,Mongoose,我想在一个按日期排序的集合中查找文档。这是可行的,但是我在底部的日期字段中得到了null的文档,我首先要这些文档 MyModel.find({ }, null, { sort: { date: -1 } }, function(err, models) { // Models sorted with the "largest" date first and models with null dates last }); 如果我将排序更改为{date:1},我确实会首先获得null的文档

我想在一个按日期排序的集合中查找文档。这是可行的,但是我在底部的日期字段中得到了
null
的文档,我首先要这些文档

MyModel.find({ }, null, { sort: { date: -1 } }, function(err, models) {
    // Models sorted with the "largest" date first and models with null dates last
});
如果我将排序更改为
{date:1}
,我确实会首先获得
null
的文档,但在其他情况下,顺序是相反的,这是我不想要的


如何实现所需的行为?

不幸的是,似乎没有简单的方法可以做到这一点,类似于SQL的“nulls first”/“nulls last”语法。此Mongo bug中提到了此功能:

在这里,它与自定义排序函数的更大功能循环在一起。(我真希望能将其分解为一个单独的功能请求,因为我认为只实现空值的第一位/最后一位应该比自定义排序函数容易得多,并且仍然提供很多价值。)

无论如何,目前的解决办法是,除了现有的查询之外,只需单独查询空值:


除了手动使用它们(或者可能使用map/reduce),我认为这是不可能的(另请参见)。
MyModel.find({ date: null });
MyModel.find({ date: { $ne: null } }).sort({ date: -1 } });