【问题标题】:Query mongoose to find all JSON objects matching "req.body.search"查询 mongoose 以查找与“req.body.search”匹配的所有 JSON 对象
【发布时间】:2017-07-20 18:41:28
【问题描述】:

我有一个搜索框,我想使用 mongoose 返回与搜索匹配的任何 JSON 对象。

现在我只能搜索对象的名称,然后返回与搜索名称匹配的 JSON 对象。:

var mongoose = require('mongoose');
var App = mongoose.model('App');
var express = require('express');
var bodyParser = require('body-parser');

var exp = express();

exp.use(bodyParser.json()); 
exp.use(bodyParser.urlencoded({
  extended: true
})); 


module.exports.searchApp = function(req, res) {
  App.findOne({
    'app_name': req.body.search
  }).exec(function(err, app) {
    res.status(200);
    res.json(app);
  });
};

如何编写一个查询以返回与使用 mongoose 进行搜索匹配的任何 JSON 对象?

【问题讨论】:

  • 你能给我们一个查询词的例子和一些你希望得到的 JSON 对象吗?
  • “app_id”:1,“app_name”:“Sonsing”,“app_developer”:“Skynoodle”,“app_version”:“2.8”,“price”:16 },{“app_id”: 2,“a​​pp_name”:“Fintone”,“app_developer”:“Trupe”,“app_version”:“0.8.9”,“price”:9},{“app_id”:3,“app_name”:“Overhold”, "app_developer": "Tagopia", "app_version": "6.31", "price": 58 },
  • 使用find 而不是findOne
  • 这些对象是生成的应用程序。我还想查询 mongoose 以将与 app_developer || 匹配的对象返回给我。应用程序版本 ||价格。
  • 请使用示例编辑您的问题,以启发我们您期望收到的内容。另外,请放置一个查询示例。

标签: node.js mongodb express mongoose mongodb-query


【解决方案1】:

您可以使用 Mongo 的 FTS 功能搜索多个字段:

首先,您必须为要包含在搜索中的字段创建几个text indexes。

然后使用text operator,您将使用搜索词进行查询,Mongo 将在您上面指定的文本索引中搜索该词。

App.find({
   $text: {
      $search: req.body.search
   }
})

【讨论】:

    猜你喜欢
    • 2019-05-06
    • 2013-08-24
    • 2015-12-23
    • 1970-01-01
    • 2021-07-08
    • 2016-10-18
    • 1970-01-01
    • 2019-07-15
    • 1970-01-01
    相关资源
    最近更新 更多