如何在 mongodb 中找到整数值的 $regex?

Posted

技术标签:

【中文标题】如何在 mongodb 中找到整数值的 $regex?【英文标题】:How to find $regex for integer value in mongodb? 【发布时间】:2018-11-20 20:55:05 【问题描述】:

我有以下收藏。

[
  _id: ObjectId("5b17ab5489264c2df61ed2d6"),
   amount: 12514545
]

我想搜索125并获取以下文档。

我试过了,但是不行:

db.collection.find(
  amount: 
    $regex: 125
  
)

如果能通过聚合查询就更好了。

  Test.aggregate([
     "$match":  "$or": [
     "amount":  parseInt(searchString) ,
     "firstName":  "$regex": searchString 
  ]  
  ])

【问题讨论】:

出于好奇,你为什么想要它? @AlexBlex 为什么会这样?大多数人都需要这些类型的聚合...不知道您认为这个问题有什么奇怪... @Ashish 只是想知道用例是什么。想不出有什么好的理由去搜索一个包含“125”的数字。 【参考方案1】:

您可以使用$where 查询运算符进行这样的非标准查询,但它的性能不佳:

db.test.find($where: 'this.amount.toString().match("125")')

但您不能在聚合$match 中使用$where

要总体上执行此操作,我认为您必须在用于正则表达式搜索的每个文档中维护一个单独的字符串版本 amount


  _id: ObjectId("5b17ab5489264c2df61ed2d6"),
   amount: 12514545,
   amountString: '12514545'

然后您可以像搜索任何其他字符串字段一样搜索它:

Test.aggregate([
   "$match":  "$or": [
     "amountString":  "$regex": searchString ,
     "firstName":  "$regex": searchString 
  ]  
])

【讨论】:

如何在聚合查询中做到这一点,请参阅更新后的问题。 我想在这里使用聚合来使用 $match,有什么方法可以处理这个...@JohnnyHK

以上是关于如何在 mongodb 中找到整数值的 $regex?的主要内容,如果未能解决你的问题,请参考以下文章

如何将整数值分配给字符串并在 SQL 中找到总和

在 C++ 中找到小于特定整数值的最接近的浮点值?

python3的最大整数值[重复]

如何在 C 中构造一个具有绝对整数值和等效 char 整数值的 char 数组?

Firestore - 如何在数据库中原子地减少整数值?

如何从 NSRange 中提取整数值?