0

如何在特定的嵌套 json 对象字段中搜索任何特殊字符。我有一个存储嵌套 json 数据的字段。

我需要编写一个 MongoDB 查询来获取所有具有特殊字符的名称

学生收藏:

例子:

{
_id:123
student: {
      "personalinfo":{
             "infoid": "YYY21"
             "name": "test@#!*"
                     }
         } 
}

我尝试了一些正则表达式,但我不确定如何循环数组元素

我希望它打印 infoid & name,它在 name 字段中有特殊字符。

4

2 回答 2

0

以下查询可以解决问题:

db.collection.distinct("student.personalinfo.name",{"student.personalinfo.name": { $not: /^[\w]+[\w ]*$/ } })

数据集:

{
    "_id" : ObjectId("5d77a5babd4e75c58d59821d"),
    "student" : {
        "personalinfo" : {
            "infoid" : "YYY21",
            "name" : "test@#!*"
        }
    }
}
{
    "_id" : ObjectId("5d77a5babd4e75c58d59821e"),
    "student" : {
        "personalinfo" : {
            "infoid" : "YYY21",
            "name" : "Bruce##"
        }
    }
}
{
    "_id" : ObjectId("5d77a5babd4e75c58d59821f"),
    "student" : {
        "personalinfo" : {
            "infoid" : "YYY21",
            "name" : "Tony"
        }
    }
}
{
    "_id" : ObjectId("5d77a5babd4e75c58d598220"),
    "student" : {
        "personalinfo" : {
            "infoid" : "YYY21",
            "name" : "Natasha"
        }
    }
}

输出:

[ "test@#!*", "Bruce##" ]
于 2019-09-10T14:16:57.167 回答
0

尝试使用下面的正则表达式,它匹配所有 unicode 标点和符号。

dbname.find({'student.name':{$regex:"[\p{P}\p{S}]"}})
于 2019-09-10T12:08:14.333 回答