问题标签 [mongodb-atlas-search]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
52 浏览

mongodb - 什么查询在 MongoDB 中使用更少的资源?

我正在熟悉 Lucene 和 MongoDB Atlas 搜索,并且我对查询效率有疑问。

这些查询中的哪一个使用较少的资源?

如果对执行以下任务有更好的查询,请告诉我。

我想返回与标题值匹配的所有电影(sample_mflix)。电影必须是特定年份的(不应返回任何不属于该年份的电影),我想返回movies.awards.nominations & movies.awards.wins 的“$gte”值的电影。

第一个查询似乎更复杂(这似乎增加了资源利用率 - 查询复杂性?)。此查询也不只返回该年份的值。这让我认为 Atlas 搜索可能有更好的方法来做到这一点。

第二个查询在不同阶段使用 $search 和 $match。它有一个简单的 Lucene 搜索(可能会返回比第一个查询更多的电影?),并且匹配运算符将过滤结果。第二个查询更精确 - 从我的测试来看,它尊重年份约束。如果我应用限制阶段,这会是更好的解决方案吗?

如果这些查询是在相同的场景中执行的,哪一个会更有效,为什么(抱歉,第二个查询是为 .net 驱动程序格式化的)?

VS

0 投票
2 回答
294 浏览

node.js - 使用 Mongodb 进行自定义搜索

我有一个 MongoDB 作为我的数据库,后端是用 node.js 编写的。我正在尝试搜索一个表,该表返回我输入的字符串和字符串匹配的所有结果。

例如搜索“foo”将返回(按该顺序)

  • foo maker moo

  • doo foo doo //搜索词的顺序无所谓,只要把搜索词放在首位

  • 富吧

  • 福布

目前我有这个,但我相信有一种更好的方法可以在不搜索数据库两次的情况下做到这一点:

0 投票
1 回答
218 浏览

mongodb - 如何在 Atlas mongoDB 中创建集合特定的搜索索引?

我正在尝试在地图集 MongoDB 中创建特定于集合的搜索索引,但找不到方法。

找到此文档: https ://docs.atlas.mongodb.com/reference/api/atlas-search/#atlas-search-api-ref

但他们提到的 API 将在集群级别创建索引

有人可以指导我如何通过脚本创建特定于集合的搜索索引吗?

0 投票
0 回答
674 浏览

mongodb - MongoDB Atlas Search:自动完成,分数模糊

我正在使用托管 cloud.mongodb.com 的当前版本的 MongoDB Atlas Search(版本 4.2.8)。

我的搜索索引定义如下:

我正在运行以下查询:

结果中的分数是1.0结果集中所有文档的分数:

这是在自动完成时使用模糊的预期行为还是我错过了什么?

使用类型type: "string"analyzer: "lucene.standard"搜索索引定义和简单的文本查询,评分按预期工作。

旁注:我希望将模糊参数设置为文档中描述的默认值,但必须手动设置。

0 投票
0 回答
1047 浏览

mongodb - MongoDB Atlas Search - 匹配文档的缓慢计数

我有一个包含 11M 记录的集合,其中包含其他属性,一个带有客户端名称的“名称”属性:

我在“名称”字段上创建了一个 Atlas Search 索引,其定义如下:

我的用例计算与我正在这样做的某个术语匹配的所有文档:

问题是在 M30 Atlas 集群上完成此查询大约需要 40 秒(我猜如果完全从内存中获取,有时需要 10 秒或 20 秒)。这是否在匹配 11M 文档上的术语的预期执行时间内?我将不胜感激有关如何优化此类查询的任何建议。

0 投票
1 回答
178 浏览

mongodb - 执行时聚合搜索功能错误

我显然不了解猫鼬中的聚合函数。我正在尝试查询 productCode 字段并返回所有产品。下面的代码返回错误;

Product.aggregate(...).search 不是一个函数。

我在这里做错了什么?我正在使用猫鼬。

更新日期

查询中的文本来自输入字段。我想从包含我从输入字段传递的文本的产品集合中返回所有文档。这是用于客户端的自动完成下拉菜单。例如。

输入字段中的文本:'1';

MongoDB集合:Products

在这种情况下,我想退回所有包含“1”的产品。在那里它返回'1A'和'C1'

0 投票
1 回答
605 浏览

mongodb - 如何使用复合 MongoDB Atlas 搜索查询在整数数组中进行搜索?

我正在使用 MongoDB Atlas 的全文搜索功能帮助我查找按分数排序的类似文档的功能。

我将我的收藏索引设置为“动态”。

我正在寻找文本字段中的相似之处,例如“名称”或“描述”,但我也想查看另一个字段“主题”,它存储主题的整数值 (id)。


例子:

假设我有一个参考文件如下:

我希望我的搜索与int主题字段中的这些匹配,并将它们的权重包含在分数计算中。

例如,如果我将我的参考文档与:

我想增加分数,因为主题字段与参考文档共享93值。


问题:

我应该使用什么搜索运算符来实现这一点?我可以使用运算符输入字符串数组作为查询,text但我不知道如何处理整数。

我应该采用另一种方法吗?喜欢将数组拆分为多个compound.should.term查询进行比较?


编辑

经过大量搜索,我在这里这里找到了这个:

如果数值或日期值是数组的一部分,则 Atlas Search 无法索引它们。

在考虑更改对象的整个数据结构之前,我想确保没有解决方法。

例如,可以使用自定义分析器来完成吗?

0 投票
1 回答
264 浏览

mongodb - Mongodb图集搜索:应用多种语言分析器

有一个集合即 - 类别,它具有以下模式

它具有特定于语言的数据,除了名称之外 - 描述等等。我想在所有三种语言的名称字段上创建图集搜索索引。我曾尝试使用'name''translation.name'创建 atlas 搜索索引,但它不适用于 translation.name。这是图集搜索索引:

这里的问题是,如果我将 translation.name 的语言分析器指定为德语,我不能将其应用于英语。如何将多个语言分析器用于单个字段?

0 投票
2 回答
1025 浏览

mongodb - Mongo db atlas search:在嵌入文档上创建 atlas 搜索索引

对于存储类别,我有以下架构 -

对于搜索,需要在类别名称和子类别名称上应用图集搜索索引。我尝试了以下映射,它不适用于子类别的名称和描述。

我在字段映射中缺少什么吗?

0 投票
1 回答
910 浏览

mongodb - Mongodb atlas search:如何对同一个查询字符串使用多个分析器,以便返回至少一些结果

所以问题陈述是 - 我正在使用 atlas 搜索来搜索产品数据并拥有多种语言的产品详细信息。为此,我使用了多分析器,并在同一领域定义了标准和相应的语言分析器,以便在任何情况下都得到匹配的产品。要求是,因为它是一个产品搜索,我需要返回至少一些建议供用户查看并通过返回的搜索结果访问产品。这是我在研究如何在单个字段上应用多个分析器后使用的映射:

现在,我想要的是 - 如果我正在搜索英语、德语或法语的单词,我必须得到一个结果。这个映射也很好,我得到了所有三种语言的结果。但用例是,我希望在任何这些情况下得到结果:

  • 搜索字符串为英语、德语或法语
  • 搜索字符串模糊(有拼写错误)
  • 搜索字符串包含任何特殊字符或空格
  • 搜索字符串可以被认为是一个完整的术语,并且可以在此基础上返回结果。

以上所有要求使我能够使用所有分析器 - 标准、关键字、语言、空格和简单。但这将索引大小增加到超过 3KB(这是一个上限),而且即使对于我目前仅应用语言和标准分析器的映射,我也没有得到结果。