我想在我的网站中实现搜索功能,该功能允许用户搜索数据库,然后根据需要对搜索结果进行过滤或排序。像this这样的东西。
是否有效率"我可以使用Schema.find()搜索并将结果存储在Mongoose对象数组中,然后根据用户输入过滤或排序这个数组的方式?或者,每次用户添加新过滤器时,是否必须创建新查询?
答案 0 :(得分:0)
这个答案很大程度上取决于您的架构。乍一看,您问题的直接答案是使用query builder interface。这可以让你链接在一起的子句,并通过链接排序和限制选项,例如。
Person.find({ occupation: /host/ }).
where('name.last').equals('Ghost').
where('age').gt(17).lt(66).
where('likes').in(['vaporizing', 'talking']).
limit(10).
sort('-occupation').
select('name occupation').
exec(callback);
但是,如果你正在做一个网络应用程序,可能会假设您想要使用第一个查找响应,然后让用户从那里进行过滤和排序。
在这种情况下,您需要对客户端进行排序和过滤(如果您通过babel或lodash使用ES6,则不会太难),或者您的初始查找返回很多记录,你仍然需要去服务器并重新查询数据库。