Mongo DB查找-SQL Like-中间的通配符

时间:2019-07-17 14:47:58

标签: mongodb sql-like regexp-like

该问题与How to query MongoDB with "like"?非常相似,但是我无法使用该问题或此处的文档https://docs.mongodb.com/manual/reference/operator/query/regex/来找出我需要的查询。

我需要在mongo集合中查找文档,该文档在字段中具有以下格式的值:

“ key-> some_name :: details->(值='{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/}})

但是它返回0个文档。我也尝试了一下,但还是没有用:

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"
...
}

1 个答案:

答案 0 :(得分:0)

结果证明这是转义特殊字符()的问题,有效的查询是:

db.getCollection('collection_name').find({"some_field":{$regex:/^key->some_name::details->\(value = '.*'\):sort->by_name/}})