Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/414.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript mongodb v2.4中的高效搜索_Javascript_Node.js_Mongodb_Search - Fatal编程技术网

Javascript mongodb v2.4中的高效搜索

Javascript mongodb v2.4中的高效搜索,javascript,node.js,mongodb,search,Javascript,Node.js,Mongodb,Search,我使用的是mongodb的2.4版,它可以很好地满足我的需要,除了一件事,即搜索,因为它不支持一些高级选项,比如$search。那么,在v2.4中有没有一种方法可以实现这种搜索呢。我坚持使用旧版本的原因是,我不想因为升级而丢失任何数据,也不想停止live mongo服务器。 我想要的结果应该与此查询的结果类似: db.data.find({$text: { $search: 'query' } }, { score: {$meta: "textScore" }}) 对于最新版本的mongoDB

我使用的是mongodb的2.4版,它可以很好地满足我的需要,除了一件事,即搜索,因为它不支持一些高级选项,比如$search。那么,在v2.4中有没有一种方法可以实现这种搜索呢。我坚持使用旧版本的原因是,我不想因为升级而丢失任何数据,也不想停止live mongo服务器。 我想要的结果应该与此查询的结果类似:

db.data.find({$text: { $search: 'query' } }, { score: {$meta: "textScore" }})

对于最新版本的mongoDB,此查询工作正常。另外,如果您建议我使用最新版本,请提供一些参考资料,帮助我安全升级mongodb。

这是一个小难题,主要是由于早期版本中的文本搜索功能被认为是实验性的。除了处于早期的开发阶段外,实现完全不同,因为整个查询和索引API都是为MongoDB 2.6重新编写的,主要是为了支持新类型的可用索引,并使用于处理数据的API保持一致

因此,以前的版本仅通过命令界面直接实现文本搜索。工作方式略有不同,当前的弃用通知意味着以这种方式工作将被删除。但该命令目前仍将按照早期文档所示操作:

db.data.runCommandtext,{search:query} 因此,正如现有文档中所述,这里存在一些限制。值得注意的是,返回的文档数是包含该命令的limit参数的文档数,并且没有skip的概念。此外,这是一个文档响应,而不是光标,因此总结果不能超过BSON 16MB的限制

这是一个有点偏离的话题,但是考虑一下MungDB 2.6的部署场景,主要是在下面。

未来证明。在早期形式中,这是一个实验特征。因此,在您保留版本的同时,任何一般性缺陷和问题都不会以任何方式通过修复进行后端口。有些人可能会这样做,但没有一个很好的理由这样做,这大多会随着时间的推移而减弱。请记住,这是实验性的,所以在生产中使用时会给出适当的警告

一致性/不赞成。文本和地理空间的API已更改。所以早期版本中的实现是不同的,不推荐使用,并且将消失。正确的方法是使用与其他查询相同的结构,并在所有查询表单中一致使用它,而不是直接使用命令

部署。你说你不想停止服务器,但是你真的不应该有一台服务器。除了不理解为什么需要MongoDB之外,至少副本集对于数据冗余和应用程序的正常运行时间来说是个好主意。消除单点故障意味着您可以单独关闭离散节点并进行升级,而不会影响应用程序停机时间


这有点偏离了编程主题,但对我来说,最后一点是最重要的。通过将其构建到部署体系结构中,更好地确保您的应用程序没有故障点。这样一来,保持领先就更简单了。在投入生产之前,始终值得注意的是关于技术的实验条款。掩护你的基地。

谢谢@Neil。“你是个救世主。”拉维,关于这一点,我实际上有更多的话要说,而不仅仅是指出命令的形式。在决定用这种方式编码之前,所有的细节都是值得考虑的。这是一个很好的考虑因素,我会考虑到未来的发展:我还有11个查询,我能在同一个查询中匹配任何次要字段吗?这由命令中的筛选条件覆盖。有关所有详细信息,请参阅链接的手册页面。