使 MongoDB 中的表字段可文本搜索

2024-03-26

先决条件:

已使用集合创建数据库posts它的架构如下:

module.exports = function(mongoose){
var Schema = mongoose.Schema;

var postSchema = new Schema({
   postID:          String,
   title:           String,
   description:     String
});

mongoose.model('post', postSchema, 'posts');
postSchema.index({title: 'text'});

};

通过 API 处理的节点路由器:

apiRouter.get('/api/searchPosts', function(req, res, next){
    postModel.find(
        { $text : { $search : req.query.text } }, 
        { score : { $meta: "textScore" } }
    )
    .sort({ score : { $meta : 'textScore' } })
    .exec(function(err, posts) {
        if(posts){
            res.json({
                posts       :   posts
            });
        } else {
            res.send('Post does not exist');
        }
    });
});

我想要实现的目标:

我想在我的领域开辟一个领域posts表称为title可搜索文字。

我的堆栈:

MongoDB、NodeJS(使用 Mongoose)、Angular

我的做法:

正如先决条件中提到的,我添加了以下行:

postSchema.index({title: 'text'});

此外,创建集合后,我在终端中运行以下命令:

db.posts.createIndex({"title":"text"})

问题:

当我从 URL 访问它时,它最初可以工作,但几周后,它停止工作(我得到“帖子不存在”,没有进行任何更改!)。为了让它再次工作,我必须删除集合并创建一个新集合并运行命令:

db.posts.createIndex({"title":"text"})

然后它开始工作几周等等。

我做错了什么?我没有看到这几周内发生的情况的趋势。我已经被这个问题困扰了几个星期,所以如果有人可以提供帮助,我将不胜感激。

谢谢, 沙彦


最终,解决方案如下:

var postSchema = new Schema({
  postID:          String,
  title:           { type: String, text: true },
  description:     String
});

到目前为止,这已经成功了。

我会再次检查一下,看看它是否会像每隔几周那样损坏。如果有的话会更新帖子。

感谢 Andrei Neagu 记录“错误”建议。有时,显而易见的事情就会被错过

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使 MongoDB 中的表字段可文本搜索 的相关文章

  • Node.js 是否有一个工具可以为我提供堆中由类名字符串表示的所有对象的列表?

    我正在尝试调试 node js 服务中的高内存使用情况 根据 top 的数据 该服务接近 1 5 GB 的常驻内存使用量 我需要查看哪些对象是使用的罪魁祸首 你可以试试 nodetime https npmjs org package no
  • 将jquery与nodejs一起使用时的基本错误

    我正在尝试在我的项目中使用一些jquery 当我尝试使用它时 我在复制的代码中遇到了错误 并且无法获得任何有关它的谷歌帮助 var jquery require jquery var jquery create TypeError Obje
  • chai-http/superagent : 设置多部分表单字段的 Content-Type

    在集成测试中上传文件如下 chai request server instance post profile photo 0 set Access Token accessToken set API Key testConfig apiKe
  • Puppeteer 的行为与开发者控制台不同

    我正在尝试使用 Puppeteer 提取此页面的标题 https www nordstrom com s zella high waist studio pocket 7 8 leggings 5460106 https www nords
  • 在 Node.js 中实现服务器发送事件的简单方法?

    我环顾四周 似乎在 Node js 中实现 SSE 的所有方法都是通过更复杂的代码 但似乎应该有一种更简单的方法来发送和接收 SSE 是否有任何 API 或模块可以让这件事变得更简单 这是一个每秒发送一个服务器发送事件 SSE 的 Expr
  • 谷歌应用程序引擎nodejs本地开发

    有没有办法在本地运行我的nodejs应用程序 以便我可以模拟在生产App Engine中运行的应用程序而无需部署它 由于某种原因 我的应用程序在 Google App Engine 中的行为与我的本地主机不同 我厌倦了每次为了查看是否存在错
  • 加密 mongodb 中的密码字段

    我有以下代码 它插入userName and password进入数据库 但密码以纯文本格式存储 我的意思是 当我查看数据库时 我可以看到插入的密码 我想存储password in encrypted format MongoClient
  • 在express中root后通过可选参数传递路由控制?

    我正在开发一个简单的网址缩短应用程序 并有以下快速路线 app get function req res res render index link null app post function req res function makeR
  • ExpressJS - 提供通用 Nuxt 应用程序和 AngularJS SPA

    我有一个具有以下结构的博客项目 服务器 用 Node Express 编写 管理员 AngularJS SPA public AngularJS SPA 目前 管理部分和公共部分具有相同的域 但管理部分使用不同的子域 这允许我在 Expre
  • 已安装全局 NPM 包但未找到命令

    我已经全局安装了两个 npm 包 下载 https www npmjs com package download and 谜虚拟盒 https www npmjs com package enigmavirtualbox通过命令行 npm
  • mongoDB白名单IP

    我看到类似的帖子 但没有一个能帮助我解决我的问题 在学习了从头开始构建 MERN 应用程序的 Udemy 教程后 我陷入了 mongoose 连接的困境 这是我的 index js 代码 const express require expr
  • 嵌入文档中的mongodb限制

    我需要创建一个消息系统 一个人可以在其中与许多用户进行对话 例如 我开始与 user2 user3 和 user4 交谈 因此他们中的任何人都可以看到整个对话 并且如果对话在任何时候都不是私密的 则任何参与者都可以将任何其他人添加到对话中
  • Google 钱包 API Codelabs 示例权限被拒绝

    我正在研究使用 Google 钱包通过 Web jwt 界面存储条形码 用于电子处方 如果重要的话 的可行性 https codelabs developers google com add to wallet web 0 https co
  • 在 TypeScript 中将 Chai 自定义插件声明为 NodeJS 全局变量

    这是我之前的问题 https stackoverflow com questions 61676032 declare nodejs global variables in before hook in webdriverio using
  • Windows 上的 Node.js 和 Express

    今晚 我决定尝试在我的 Windows 7 计算机上使用 Express 构建一个简单的 Node js 应用程序 安装过程还算顺利 但 Express 拒绝配合 以下是我已采取的步骤 使用以下位置提供的 MSI 安装 Node jshtt
  • 将 Node.js(用于实时通知)添加到现有 PHP 应用程序

    我有一个现有的 PHP 应用程序 我需要向其中添加实时通知 为了实现这一点 我安装了node js 打算添加socket io以实现所有实时功能 然而 尽管在过去的三个小时里研究并试图弄清楚如何将两者结合起来 但我发现自己并没有更接近于获得
  • Docusaurus 2 中的自定义搜索栏

    我正在尝试 Docusaurus V2 我想使用 LUNR 启用离线搜索 https lunrjs com https lunrjs com 按照本博客中的描述进行搜索 https v2 docusaurus io feedback p o
  • lessc:未找到命令

    我使用的是 OS X 8 并且是 Node LESS 的新手 我以为我之前安装了 lessc 当我转到 usr local bin 时 我看到了 lessc 但对于我的生活来说 我无法运行它 每当我运行它时 我都会看到 bash lessc
  • 永远运行 Gulp 脚本?

    是否可以运行 Gulp 脚本forever https www npmjs com package forever 我有 Gulp 脚本想要作为守护进程运行 所以我可以启动 停止 列出它 好的 所以我通过将 gulp 二进制文件从 usr
  • 如何调试 Node.js 应用程序?

    如何调试 Node js 服务器应用程序 现在我主要使用警报调试打印语句如下 sys puts sys inspect someVariable 一定有更好的调试方法 我知道谷歌浏览器 http en wikipedia org wiki

随机推荐

  • Hibernate:加载与获取

    我知道这是一个常见问题 已经被描述过很多次了 但我仍然无法得到一些东西 性能怎么样 哪种方法更快 实际上 我需要一个简单的事情 页面发出一个 POST 请求 id 0 name John 服务器端脚本应检查 id 0 是否 然后在数据库中创
  • FieldConverter ConverterKind.Date“dd/MM/yyyy”异常

    我尝试读取 csv 文件 我的第五条记录包含日期 03 11 2008 这是我的一段代码 FieldConverter ConverterKind Date dd MM yyyy public DateTime datum 5 我的代码在此
  • Mongodb 聚合将参数传递给 $sample 的元素大小

    大家好 这里的任何人都可以帮助我解决以下问题 我想获得随机数量的测验列表 随机数将 以每节课为基础 问题是 mongodb 不允许将参数传递给 sample 的元素大小 任何人都可以给我解决方案 lessonModel aggregate
  • 如何知道所有设备令牌以循环发送推送通知(APNS)?

    我正在尝试使用 php 代码发送给下载我的 iPhone 应用程序的所有令牌 您能告诉我如何发送到多个设备以及如何进入设备令牌循环吗 这是我的代码
  • 将 bootstrap-slider 与 jQuery UI 结合使用

    我想用引导滑块 https github com seiyria bootstrap slider使用 jQuery UI 我按照文档并在加载 Bootstrap CSS 和 jQuery 后加载插件代码 但是 滑块尚未初始化
  • HG PUSH:中止:错误:现有连接被远程主机强制关闭

    我正在尝试推送我的变更集 在停止很长时间后 我收到以下错误消息 abort 错误 现有连接被远程主机强制关闭 我在 Windows 上使用 Apache 提前致谢 您是否配置了 http proxy 任何地方 例如 在你的 hgrc或乌龟m
  • 使用 Unity MVC5 进行依赖注入 - InjectionFactory 已弃用

    在最新版本的 Unity MVC5 中 InjectionFactory 已被弃用 以下是您在尝试使用它时会收到的过时警告 Obsolete InjectionFactory has been deprecated and will be
  • 在 iOS 7 中实现 heightForRowIndexPath:,但在 iOS 8 中使用编译时宏将其删除

    我想在 iOS 8 中实现新的自动调整表格视图单元格大小 同时保持对heightForRowAtIndexPath 在 iOS 7 中 问题是我必须删除方法覆盖heightForRowAtIndexPath 对于 iOS 8 但在 iOS
  • 如何使用 CSS 动态调整内容区域大小而不使用 JavaScript

    我想要的是这样的 当浏览器窗口调整大小时 蓝色区域也会调整大小 标题可见 蓝色区域从标题结束处开始 不是标题后面或上方 蓝色区域在页脚之前结束 蓝色区域和页脚之间存在 5 个黄色像素 这只能通过 CSS 和 HTML 实现 无需任何 jav
  • 如何从 Kendo 网格中删除所有行

    我在用Kendo grid 我想从中删除所有行Kendo grid using JavaScript 我使用 for 循环删除了它们 但我想找到删除所有行的最佳方法 尝试按照代码进行操作 var grid Grid data kendoGr
  • mongodb show dbs list数据库失败

    我是 mongodb 的新手 我刚刚在我的MAC上安装了mongoDB 看完这个 YouTube 视频后 在 mongo shell 中 我输入 show dbs 并得到有线输出 请帮助我理解并解决这个问题 gt show dbs 2017
  • 在 JDBC 中插入单引号以进行 SQL 查询不起作用

    我在通过 Oracle JDBC 在 JAVA 的准备好的语句中使用单引号时遇到了处理单引号的问题 假设我们有一张 Restaurant 表 其中一列 Restaurant name 的值为 1 Jack s Deli 我想使用一个简单的准
  • 使用另一个对话框的功能更改 jQuery-UI 对话框的标题

    为什么第二个 jQuery UI 对话框标题在弹出时不改变 第一个对话框我使用以下命令更改框的标题 attr title Confirm 它将第一个框的标题更改为 确认 就像它应该有的那样 现在 当第二个框弹出时 它应该将标题更改为 消息
  • 将 std::hash 专门化为依赖类型

    我已经定义了这个模板类结构 template
  • 尝试获取已安装应用程序列表时出现 TransactionTooLargeException

    作为我的应用程序的一部分 我通过使用 ApplicationPackageManager getInstalledApplications 获取设备上安装的应用程序列表 但对于某些用户 我收到崩溃报告说 android osBinderPr
  • 视图漂浮在所有 ViewController 之上

    在 iOS 上 视图是否可能始终漂浮在所有其他视图之上 我问这个是因为我想要实现的是一个漂浮在 ViewController 之上的视图 然后一个模态视图控制器滑入 同时该特定视图仍然漂浮在该模态视图控制器上 希望你明白我想说的 有 您可以
  • 程序员多久会被要求编写一个 makefile 文件? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 从当前文化中获取货币?

    有没有办法从应用程序文化设置动态获取当前信息 基本上 如果用户将文化设置为美国 我想知道货币是美元 或者如果他们将其设置为英国 我想知道英镑等 等等 这样我就可以在付款时将此信息发送给 PayPal 使用 RegionInfo ISOCur
  • 根据当前值更新 MongoDB 中的值

    我想做这样的事情 但是this关键字似乎没有在更新语句中设置 db items update foo set bar this foo false true 我必须使用eval来完成这个 是的 您不能引用修饰符中的其他字段 您必须使用 db
  • 使 MongoDB 中的表字段可文本搜索

    先决条件 已使用集合创建数据库posts它的架构如下 module exports function mongoose var Schema mongoose Schema var postSchema new Schema postID