在MongoDB中查找包含包含特殊字符的字段的文档

时间:2019-06-13 07:38:07

标签: mongodb

在SQL中,存在语法:

SELECT
    TemplateID,
    Body
FROM
    #Template
WHERE
    Body LIKE '%[^0-9a-zA-Z ]%'  

来自SQL问题here
表达式在其中查找带有Body的行的行,其中包含无效字符(不是数字或字母)。

在MongoDB查询中是否有类似的简洁方法来查找包含无效(或特殊)字符的字段?

2 个答案:

答案 0 :(得分:1)

您可以按以下方式尝试MongoDB $ regsx:

db.collection.aggregate([
    {
        $match: { 
            $or: [
                {'fieldName': { $regex: "$", $options: 'i' } },
                {'fieldName': { $regex: "#", $options: 'i' } },
                /* Append you special char here in array */
            ]
        }
    }
])

答案 1 :(得分:0)

我发现正则表达式也可以在Mongo中使用:

db.myCollection.
find(
  {
    "title": {
                 "$regex": ".*[^0-9a-zA-z |,'-:&%].*"
             }
  })

或者基于(grep) Regex to match non-ASCII characters?

的更简洁更优雅的正则表达式
db.myCollection.find(
{
    'title': {'$regex': ".*[^[:ascii:]].*"}
},
{
    'title': 1,
    '_id': 0
}
).limit(10)