Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 土耳其文字与猫鼬_Regex_Mongodb_Mongoose - Fatal编程技术网

Regex 土耳其文字与猫鼬

Regex 土耳其文字与猫鼬,regex,mongodb,mongoose,Regex,Mongodb,Mongoose,我正试图用一个词在一个集合中搜索。所以我有这样的记录: { "_id" : ObjectId("5ec2e9d0543e75377e9f3981"), "text" : "işlemci", "question" : ObjectId("5ec2c3f36700e13311592917"), "createdAt" : ISODate("2020-05-18T20:02:24.641+0000"), "updatedAt" : ISODate("

我正试图用一个词在一个集合中搜索。所以我有这样的记录:

{ 
    "_id" : ObjectId("5ec2e9d0543e75377e9f3981"), 
    "text" : "işlemci", 
    "question" : ObjectId("5ec2c3f36700e13311592917"), 
    "createdAt" : ISODate("2020-05-18T20:02:24.641+0000"), 
    "updatedAt" : ISODate("2020-05-18T20:02:24.641+0000"), 
    "__v" : NumberInt(0)
}
let doc = await Model.find({ text: 'islemci' });
我使用以下查询查找该条目:

var answer = "islemci"
    const answerRegex = new RegExp(answer, 'i');

    const answers = await Answer
        .find({
            text: answerRegex,
            question: questionId
        })
        .populate('question', 'text -_id')
        .select('text question');
它找不到任何记录,因为我们将“
islemci
”值传递给了
answer
变量。如果我尝试使用“
işlemci
”,它会找到条目

我怎么能在搜索时忽略土耳其语字符


土耳其语字符:

用于字符串比较的特定于语言的规则可以使用。基本上,在您的情况下,您可以将
en_US
用于
locale
并指定
strength
1
,这将忽略任何非英语字符

1初级比较。排序规则只执行基本字符的比较,而忽略其他差异,如变音符号和大小写

在mongoose中,可以在架构级别指定排序规则:

const yourSchema = new Schema(
    {
        text: String,
        question: Schema.Types.ObjectId,
        createdAt: Date,
        updatedAt: Date,
    },
    { collation: { locale: 'en_US', strength: 1 } }
);
无论何时调用
。按如下方式查找

{ 
    "_id" : ObjectId("5ec2e9d0543e75377e9f3981"), 
    "text" : "işlemci", 
    "question" : ObjectId("5ec2c3f36700e13311592917"), 
    "createdAt" : ISODate("2020-05-18T20:02:24.641+0000"), 
    "updatedAt" : ISODate("2020-05-18T20:02:24.641+0000"), 
    "__v" : NumberInt(0)
}
let doc = await Model.find({ text: 'islemci' });
mongoose将运行以下查询:

db.col.find({ text: 'islemci' }, { collation: { locale: 'tr', strength: 1 }, projection: {} })
它适用于平等比较,但不幸的是不适用于:

$regex实现不支持排序规则


用于字符串比较的特定于语言的规则可以使用来处理。基本上,在您的情况下,您可以将
en_US
用于
locale
并指定
strength
1
,这将忽略任何非英语字符

1初级比较。排序规则只执行基本字符的比较,而忽略其他差异,如变音符号和大小写

在mongoose中,可以在架构级别指定排序规则:

const yourSchema = new Schema(
    {
        text: String,
        question: Schema.Types.ObjectId,
        createdAt: Date,
        updatedAt: Date,
    },
    { collation: { locale: 'en_US', strength: 1 } }
);
无论何时调用
。按如下方式查找

{ 
    "_id" : ObjectId("5ec2e9d0543e75377e9f3981"), 
    "text" : "işlemci", 
    "question" : ObjectId("5ec2c3f36700e13311592917"), 
    "createdAt" : ISODate("2020-05-18T20:02:24.641+0000"), 
    "updatedAt" : ISODate("2020-05-18T20:02:24.641+0000"), 
    "__v" : NumberInt(0)
}
let doc = await Model.find({ text: 'islemci' });
mongoose将运行以下查询:

db.col.find({ text: 'islemci' }, { collation: { locale: 'tr', strength: 1 }, projection: {} })
它适用于平等比较,但不幸的是不适用于:

$regex实现不支持排序规则