如何在 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?的主要内容,如果未能解决你的问题,请参考以下文章