Mongo 数据库查找 - SQL 喜欢 - 中间的通配符
Mongo DB find - SQL Like - wildcard in the middle
这个问题与 How to query MongoDB with "like"?, yet I have not been able to use that or the documentation here https://docs.mongodb.com/manual/reference/operator/query/regex/ 非常相似,可以找出我需要的查询。
我需要在 mongo 集合中查找文档,该集合的字段中具有以下格式的值:
"key->some_name::details->(value = '{wild_card_value_here}'):sort->by_name"
在 SQL 中,此查询看起来像
SELECT * from some_Table where field like 'key->some_name::details->(value = ''%''):sort->by_name'
注意单引号是字符串的一部分
这是我用 mongo 尝试的结果:
db.getCollection('collection_name').find({"some_field":{$regex:/^key->some_name::details->(value = '.*'):sort->by_name/}})
但是它returns0个文件。我也试过这个也没有用:
db.getCollection('collection_name').find({"some_field":"key->some_name::details->(value = '/.*/'):sort->by_name"})
我不确定语法本身是否有问题或字符串中的特殊字符如 , -> :
等
编辑:
我希望找到的示例文档:
{
...
"some_field":"key->some_name::details->(value = 'id_1'):sort->by_name"
...
}
和
{
...
"some_field":"key->some_name::details->(value = 'id_2'):sort->by_name"
...
}
原来这是转义特殊字符 (
和 )
的问题,有效的查询是:
db.getCollection('collection_name').find({"some_field":{$regex:/^key->some_name::details->\(value = '.*'\):sort->by_name/}})
这个问题与 How to query MongoDB with "like"?, yet I have not been able to use that or the documentation here https://docs.mongodb.com/manual/reference/operator/query/regex/ 非常相似,可以找出我需要的查询。
我需要在 mongo 集合中查找文档,该集合的字段中具有以下格式的值:
"key->some_name::details->(value = '{wild_card_value_here}'):sort->by_name"
在 SQL 中,此查询看起来像
SELECT * from some_Table where field like 'key->some_name::details->(value = ''%''):sort->by_name'
注意单引号是字符串的一部分
这是我用 mongo 尝试的结果:
db.getCollection('collection_name').find({"some_field":{$regex:/^key->some_name::details->(value = '.*'):sort->by_name/}})
但是它returns0个文件。我也试过这个也没有用:
db.getCollection('collection_name').find({"some_field":"key->some_name::details->(value = '/.*/'):sort->by_name"})
我不确定语法本身是否有问题或字符串中的特殊字符如 , -> :
等
编辑: 我希望找到的示例文档:
{
...
"some_field":"key->some_name::details->(value = 'id_1'):sort->by_name"
...
}
和
{
...
"some_field":"key->some_name::details->(value = 'id_2'):sort->by_name"
...
}
原来这是转义特殊字符 (
和 )
的问题,有效的查询是:
db.getCollection('collection_name').find({"some_field":{$regex:/^key->some_name::details->\(value = '.*'\):sort->by_name/}})