像这样的10000条记录存储在mongo中。如何在node.js中有效地搜索以下内容。搜索条件可以基于mongo中的以下3个字段中的任何一个。搜索条件将来自前端,他们可以搜索userID或employeeName或部门。对于搜索,只会输入一个输入,即只有一个字段可以匹配任何这些字段,如谷歌搜索。
{
"userID": "01000900",
"employeeName": "A Abc",
"department": "Replenishment Boston"
},
{
"userID": "01001024",
"employeeName": "K Gbc",
"department": "Sales S-II - MA Core Urb"
},
{
"userID": "01001023",
"employeeName": "Ga Va",
"department": "Sales Phoenix"
},
{
"userID": "01000282",
"employeeName": "D Din",
"department": "Sales S-II - California - Me"
}
答案 0 :(得分:2)
假设 searchText 是您从客户端获取的值。使用正则表达式。
{
$or:[
{userId:{$regex: searchText, $options: 'i'}},
{employeeName:{$regex: searchText, $options: 'i'}},
{department:{$regex: searchText, $options: 'i'}}
]
}
答案 1 :(得分:2)
您可以在以下所有3个字段中使用Text index:
db.collection.createIndex(
{
userID: "text",
employeeName: "text",
department: "text"
}
)
查询db.collection.find( { $text: { $search: "string from input" } } )
应该像谷歌搜索一样。 Docs for text query syntax
答案 2 :(得分:0)
您可以为每个字段创建索引。通过这种方式,当您获取某些数据时,它将不会扫描整个文档。搜索将基于索引。所以你会立即得到结果。现在用于创建索引。假设您要在employeeName上创建索引,请执行以下操作:
db.collectionName.createIndex({employeeName:1});