【问题标题】:Mongoose - filter and sort results on user inputMongoose - 根据用户输入过滤和排序结果
【发布时间】:2017-03-31 19:37:48
【问题描述】:

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

是否有一种“高效”的方式可以使用 Schema.find() 进行搜索并将结果存储在 Mongoose 对象数组中,然后根据用户输入过滤或排序该数组?还是每次用户添加新过滤器时我都必须进行新查询?

【问题讨论】:

    标签: node.js mongodb sorting search mongoose


    【解决方案1】:

    这个答案很大程度上取决于您的架构。乍一看,您的问题的直接答案是使用query builder interface。这将让您将 where 子句链接在一起,并通过链接对选项进行排序和限制,例如。

    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);
    

    但是,如果您正在开发一个 Web 应用程序,您可能会假设您希望对第一个发现进行响应,然后让用户从那里进行过滤和排序。

    在这种情况下,您要么需要在客户端上进行排序和过滤(如果您通过 babel 或 lodash 使用 ES6,这并不难),或者如果您最初的 find 返回很多记录,您'仍然需要访问服务器并重新查询数据库。

    【讨论】:

    • 你的第二个猜测是正确的。我希望用户能够对搜索结果进行排序和过滤。但我不知道如何处理。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-11-27
    • 1970-01-01
    • 1970-01-01
    • 2021-01-18
    • 2018-11-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多