Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.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
在mongodb中按多个字段一起排序_Mongodb_Sorting - Fatal编程技术网

在mongodb中按多个字段一起排序

在mongodb中按多个字段一起排序,mongodb,sorting,Mongodb,Sorting,假设文档中有两个字段updatedAt和createdAt。但是,如果文档尚未更新,则文档不一定要有updatedAt字段 我想对这两个字段进行排序,基本上是将这两个字段合并到另一个字段中,如someField,然后执行以下操作 db.stuff.find({},{sort:{`someField:-1}}); 我想说的是,目前的作文 db.stuff.find({},{sort:{createdAt:-1,updatedAt:-1}); 将首先按createdAt排序,然后按updated

假设文档中有两个字段
updatedAt
createdAt
。但是,如果文档尚未更新,则文档不一定要有
updatedAt
字段

我想对这两个字段进行排序,基本上是将这两个字段合并到另一个字段中,如
someField
,然后执行以下操作

db.stuff.find({},{sort:{`someField:-1}});
我想说的是,目前的作文

db.stuff.find({},{sort:{createdAt:-1,updatedAt:-1});

将首先按createdAt排序,然后按updatedAt排序。

如果只查找以下内容,可以使用聚合方法进行排序、投影等:

  • 对我的createdAt进行排序
  • 对于具有相同createdAt的所有字段,按updatedAt排序
然后,以下步骤将起作用:

db.stuff.aggregate(
   [
     { $sort : { createdAt : -1, updatedAt: -1 } }
   ]
)

我不确定您为什么需要将这两个字段合并到另一个字段中

您可以使用聚合方法进行排序、投影等。如果您只查找以下内容:

  • 对我的createdAt进行排序
  • 对于具有相同createdAt的所有字段,按updatedAt排序
然后,以下步骤将起作用:

db.stuff.aggregate(
   [
     { $sort : { createdAt : -1, updatedAt: -1 } }
   ]
)

我不确定您为什么需要将这两个字段合并到另一个字段中

您可以使用聚合管道创建两个字段的有条件合并和


您可以使用聚合管道创建带有和的两个字段的条件合并


我相信OP想要一份最近创建或更新的项目列表。因此,如果某个项目是昨天创建的,但在5分钟前编辑过,它应该与5分钟前创建(或更新)的项目一起出现,而不是与昨天同一时间创建的其他项目一起出现。我相信OP希望有最近创建或更新的项目列表。因此,如果某个项目是昨天创建的,但在5分钟前编辑过,则该项目应与5分钟前创建(或更新)的项目一起出现,而不是与昨天同一时间创建的其他项目一起出现。是否仍可以在不使用聚合的情况下执行此操作?据我所知,除了创建一个新字段并在文档创建和文档更新时为其提供currentTime时间戳之外,没有其他方法。是否可以不使用聚合来执行此操作?据我所知,除了创建一个新字段并在文档创建和文档更新时为其提供currentTime时间戳之外,没有其他方法。