如何在特定的嵌套json对象字段中搜索任何特殊字符。我有一个存储嵌套json数据的字段。
我需要编写一个MongoDB查询来获取所有具有特殊字符的名称
学生集合:
示例:
{
_id:123
student: {
"personalinfo":{
"infoid": "YYY21"
"name": "test@#!*"
}
}
}
我尝试过一些正则表达式,但不确定如何在数组元素中循环
我希望它会打印infoid和名称,在名称字段中具有特殊字符。
答案 0 :(得分:0)
尝试在正则表达式下面使用,它匹配所有unicode标点和符号。
dbname.find({'student.name':{$regex:"[\p{P}\p{S}]"}})
答案 1 :(得分: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##" ]