Mongoose - 对用户输入进行过滤和排序

时间:2017-03-31 11:31:28

标签: node.js mongodb sorting search mongoose

我想在我的网站中实现搜索功能,该功能允许用户搜索数据库,然后根据需要对搜索结果进行过滤或排序。像this这样的东西。

是否有效率"我可以使用Schema.find()搜索并将结果存储在Mongoose对象数组中,然后根据用户输入过滤或排序这个数组的方式?或者,每次用户添加新过滤器时,是否必须创建新查询?

1 个答案:

答案 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,则不会太难),或者您的初始查找返回很多记录,你仍然需要去服务器并重新查询数据库。