【问题标题】:Mongoose partial search for integersMongoose 部分搜索整数
【发布时间】:2019-12-17 14:52:59
【问题描述】:

我正在寻找一种在猫鼬中部分搜索整数的方法。

我有一个对象集合,它们有一个名为incidentId(整数)的属性。我将incidentId 传递给函数(例如:1),我希望结果是所有具有incidentId 以1 开头的对象(例如:1、10、11、12 ... 100 )。

我尝试使用正则表达式(在意识到我不能将它与数字一起使用之前),如下所示: foundIncidents = await this.db.find({documentType: 'INCIDENT', 'incident.incidentId':{ $regex: incidentId, $options: 'i' }});

我无法修改 DB 架构以将 incidentId 更改为字符串。

如果您需要更多信息,请告诉我。

谢谢

【问题讨论】:

标签: javascript search mongoose integer partial


【解决方案1】:

如果您使用 MongoDb v4.0+,您可以先使用aggregation 管道方法$toStringint 转换为string
然后使用$regex 匹配incidentId

【讨论】:

  • 此操作会永久修改我的数据库还是仅在它被调用并将incidentId恢复为int时?
  • 这不会改变数据库。
【解决方案2】:

在 v4.0 之前的旧 MongoDb 版本中还有一个技巧可以将 Number 转换为 String。它使用聚合运算符$substr,它接受Number 作为输入(尽管文档说它只接受String)。

例子:

"$project": {
    "stringId": {
       "$substr": [
          "$incidentId",
          0,
          -1
       ]
    }
 }

这会将incidentId 转换为String,使用新的字段名stringId

【讨论】:

  • 不幸的是,我刚刚检查过,我有 4.0 。无论如何谢谢:D
猜你喜欢
  • 2014-12-17
  • 2015-07-23
  • 2022-12-12
  • 1970-01-01
  • 2016-05-04
  • 1970-01-01
  • 2015-11-10
  • 2011-07-05
  • 2021-04-23
相关资源
最近更新 更多