我有一个搜索文本,例如“美国”。我有以下 mongo 文档:
[
{
"name": "Car Loan",
"details": [
{
"Bank": "America First",
"Location": "USA"
}
}
]
我使用 Mongoose,我可以使用这个找到像“name”这样的单一模式:
.find({"name":{ "$regex": req.query.searchText, "$options": "i" } })
是否有类似的方法可以在混合模式(例如“详细信息”)中搜索文本?
最佳答案
您可以使用$or
指定所有字段:
db.text.find({
$or: [
{ "details.Bank": { "$regex": "America", "$options": "i" } },
{ "details.Location": { "$regex": "America", "$options": "i" } }
]
})
或者您可以使用text search具有内置不区分大小写功能,您必须创建 text indexes在您的数组字段项上:
db.text.createIndex({
"details.Bank": "text",
"details.Location": "text"
})
并使用 $text
$search
进行查找:
db.text.find({
$text: {
$search: "usa"
}
})
关于MongoDB如何通过搜索混合模式字段来查找文档?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42521376/