Regex 如何查询mongo db以返回搜索词中的所有键组合?

Regex 如何查询mongo db以返回搜索词中的所有键组合?,regex,mongodb,meteor,mongodb-query,Regex,Mongodb,Meteor,Mongodb Query,在mongo db中有标签。我正试图从搜索词的开头开始拉出所有匹配的标签。在mongo查询中是否可以实现以下功能 Mongo数据: [ {tag:'123'}, {标记:'1234'}, {标记:'123456'}, {标记:'987'}, {标记:'555'} ] 查询搜索词='12349339' 期望的结果: [ {tag:'123'}, {标记:'1234'} ] 或 [ {标记:'1234'} ] 我尝试过正则表达式,但没有效果,因为只有在数据库中有较长的搜索项并且我正在使用子字符

在mongo db中有标签。我正试图从搜索词的开头开始拉出所有匹配的标签。在mongo查询中是否可以实现以下功能

Mongo数据:

[
{tag:'123'},
{标记:'1234'},
{标记:'123456'},
{标记:'987'},
{标记:'555'}
]
查询搜索词='12349339'

期望的结果:

[
{tag:'123'},
{标记:'1234'}
]

[
{标记:'1234'}
]
我尝试过正则表达式,但没有效果,因为只有在数据库中有较长的搜索项并且我正在使用子字符串搜索时,使用(^)才有用

更新:下面是我对尝试这种方法的任何人的正则表达式尝试

tags.find({tag:{$regex:'^12349339*'}})

不返回任何内容。如果我想要所有匹配“123”的标记,那么这种查询就可以了

tags.find({tag:{$regex:'^123'}})

返回:

[
{tag:'123'},
{标记:'1234'},
{标记:'123456'}
]
但我想要相反的结果。所以,我想我需要一个聚合函数或什么的。

你可以做:

{
    $where: "'12349339'.indexOf(this.tag) == 0"
}
关于使用$where的强制性性能说明:$where提供了更大的灵活性,但要求数据库处理集合中每个文档的JavaScript表达式或函数。

您可以:

{
    $where: "'12349339'.indexOf(this.tag) == 0"
}
关于使用$where的强制性性能说明:$where提供了更大的灵活性,但要求数据库处理集合中每个文档的JavaScript表达式或函数。

Hi Rich-您能描述一下您到目前为止尝试过的查询以及它们给出的结果吗?我尝试过使用正则表达式的组合,比如{$regex:'^12349339'},但这些与我想要的正好相反。Wake的回答很有希望。例如,如果您在回复评论时需要添加额外信息,您应该通过编辑问题以包含额外信息来改进您的问题。感谢Vince的提醒。然而,我的问题确实表明我尝试使用^语句来正则表达式,但这不适合该任务。所以基本上我撞到了墙,并要求一些战略方向。再次感谢您的帮助。我的意思是,粘贴一个您尝试过的实际查询的示例,以及结果是什么,以及为什么这不是您想要的。嗨,Rich-您能描述一下您迄今为止尝试过的查询,以及它们给出的结果吗?我尝试过使用regex组合,如{$regex:'^12349339'}但这些和我想要的正好相反。Wake的回答很有希望。例如,如果您在回复评论时需要添加额外信息,您应该通过编辑问题以包含额外信息来改进您的问题。感谢Vince的提醒。然而,我的问题确实表明我尝试使用^语句来正则表达式,但这不适合该任务。所以基本上我撞到了墙,并要求一些战略方向。再次感谢您的帮助。我的意思是,粘贴一个您尝试过的实际查询的示例,以及结果是什么,以及为什么这不是您想要的。很好,这很有效。我将看看是否可以减少$where搜索的结果集,以加快搜索速度。谢谢。很好,这很有效。我将看看是否可以减少$where搜索的结果集,以加快搜索速度。谢谢