【问题标题】:Mongoose search multiple fields猫鼬搜索多个字段
【发布时间】:2020-02-17 12:31:01
【问题描述】:

全部,

尝试用 NodeJS 和 Mongoose 实现简单的搜索。

不太确定我哪里出错了,尝试像这样构建查询:

const query = Post.find();
if (value.searchQuery && value.city && value.category) {

        console.log("city and category");
        query.where({
            $or: [{ title: value.searchQuery }, { description: value.searchQuery }],
            city: value.city,
            category: value.category
        });

    } else if (value.searchQuery && value.city && !value.category) {

        console.log("No category");
        query.where({
            $or: [{ title: value.searchQuery }, { description: value.searchQuery }],
            city: value.city
        });

    } else if (value.searchQuery && value.category && !value.city) {

        console.log("No city");
        query.where({
            $or: [{ title: value.searchQuery }, { description: value.searchQuery }],
            category: value.category
        });

    } else if (value.searchQuery && !value.city && !value.category) {

        console.log("No city and no category");
        query.where({
            $or: [{ title: value.searchQuery }, { description: value.searchQuery }]
        });

基本上,我拥有的是搜索字段,带有城市和类别过滤器,用户可以按一个字段(城市、类别或 searchQuery)或全部或两个字段进行搜索。

P.s 我对猫鼬比较陌生,所以放轻松;)

谢谢!

【问题讨论】:

  • 您是否想要和条件与城市、类别和 searchval?请把你的要求说清楚??
  • 是的,有几个搜索选项:1) 仅查询 2) 查询 + 城市 3) 查询 + 类别,4) 查询、城市和类别。请注意,查询可以在标题和描述中搜索
  • 您想对所有字段进行 AND 条件吗??
  • 仅如上所述。 1) 仅查询 2) 查询 + 城市 3) 查询 + 类别 4) 查询、城市和类别
  • 必须是部分搜索,如果在标题/描述中有任何单词匹配。如果您知道我的意思,则不必匹配所有单词:) 普通搜索

标签: node.js search mongoose full-text-search mongoose-schema


【解决方案1】:

请试试这个查询

   let regex = new RegExp(value.searchQuery,'i');
   { $and: [ { $or: [{title: regex },{description: regex}] }, {category: value.category}, {city:value.city} ] } 

【讨论】:

  • 这是可行的,但仅适用于全文搜索。可以说,标题是:这是一个很长的标题......而查询是“一些”它没有找到它。有没有办法进行部分搜索?使用此查询,您需要包含要匹配的全文。
  • 标题和描述请使用正则关键字
猜你喜欢
  • 1970-01-01
  • 2017-03-09
  • 2016-07-21
  • 2014-11-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-14
相关资源
最近更新 更多