在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时间戳之外,没有其他方法。