【问题标题】:How to write a Mongo query that returns everything after a match after it's been sorted如何编写一个 Mongo 查询,在排序后返回匹配后的所有内容
【发布时间】:2020-07-31 21:54:38
【问题描述】:

假设我有一个集合架构 version,如下所示:

{
  version: String, // 1.0.1
  createdAt: Date,
}

如何编写一个查询,返回某个版本之后创建的所有版本,并提供该版本字符串?

我不想使用 Mongo 字符串比较,因为 '10.0.1' < '9.2.1' 的计算结果为 true

我用的是Mongoose,如果是mongoose语法就更好了。

【问题讨论】:

  • 你的版本是线性递增的吗?如果是这样,下面的答案应该有效。否则需要使用两个请求,使用 findOne() 通过版本字符串获取文档。然后使用带有 $gt 运算符的文档 createdAt 字段来查询之后创建的所有文档。

标签: mongodb mongoose


【解决方案1】:

编辑:只需使用两个请求。第一个按版本获取日期,然后下一个查询之后的所有版本。

const versionX = await Versions.findOne({version: '1.0.1'});
const followingVersions = await Versions.find({createdAt: {$gt: versionX.createdAt}})

【讨论】:

  • 问题是,如果我们进行简单的字符串比较,'10.0.1' < '9.2.1' 这样的情况将是真的,我们不希望这样
猜你喜欢
  • 2018-08-26
  • 2019-02-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多