在mongo db中是标签。我试图从搜索词的开头拉出所有匹配的标签。是否可以在mongo查询中实现以下功能?
Mongo数据:
[
{ tag: '123' },
{ tag: '1234' },
{ tag: '123456' },
{ tag: '987' },
{ tag: '555' }
]
查询搜索字词='12349339'
所需结果:
[
{ tag: '123'},
{ tag: '1234' }
]
或
[
{ tag: '1234' }
]
我已经尝试使用正则表达式无效,因为使用(^)仅在数据库中使用较长的搜索项且我使用子字符串进行搜索时才有用。
更新:这是尝试此方法的任何人的正则表达式尝试。
tags.find({tag:{$ regex:'^ 12349339 *'}})
什么都不返回。如果我想要所有与'123'匹配的标签,那么这种查询就可以了。
tags.find({tag:{$ regex:'^ 123'}})
返回:
[
{ tag: '123' },
{ tag: '1234' },
{ tag: '123456' }
]
但我想反过来。所以,我认为我需要一个聚合函数或其他东西。
答案 0 :(得分:0)
你可以这样做:
{
$where: "'12349339'.indexOf(this.tag) == 0"
}
使用$ where的强制性性能说明:$ where提供了更大的灵活性,但要求数据库处理集合中每个文档的JavaScript表达式或函数。 https://docs.mongodb.com/manual/reference/operator/query/where/