问题标签 [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 投票
0 回答
274 浏览

mongodb - “来自 mongot :: 的远程错误是由 :: \"path\" 引起的(来自 \"wildcard\")” - mongodb Atlas 搜索中的错误(Java 驱动程序)

尝试使用 mongodb Java 驱动程序执行 MongoDB Atlas Search查询时,我得到以下信息,我使用的是 java 驱动程序 4.1。

在代码片段之后,它是从 mogodb atlas 控制台本身生成的。

知道是什么原因吗?

0 投票
1 回答
1367 浏览

mongodb - MongoDB Atlas Search - 搜索字符串中带有“和”条件的多个术语(不是“或”)

在 MongoDB Atlas 搜索的文档中,它为autocomplete操作员说明了以下内容:

查询:要搜索的字符串或字符串。如果字符串中有多个词条,Atlas Search 还会分别为字符串中的每个词条寻找匹配项。

对于text运营商来说,同样的事情也适用:

查询:要搜索的一个或多个字符串。如果字符串中有多个词条,Atlas Search 还会分别为字符串中的每个词条寻找匹配项。

分别匹配每个术语对我来说似乎很奇怪。我们需要在我们的应用程序中进行多次搜索,对于每一次,我们希望您输入的单词越多,结果就越少,而不是更多。

示例:在搜索“John Doe”时,我只希望结果同时包含“John”“Doe”。目前,我得到与“John”“Doe”匹配的结果。

使用 MongoDB Atlas Search 是不可能的,还是我做错了什么?


更新 目前,我已经通过在空格('')上拆分搜索词并将每个单独的关键字添加到单独的 must-sub 子句(使用复合运算符)来解决它。但是,如果有一个关键字只有一个字符,则搜索查询将不再返回任何结果。考虑到这一点,我将一个字符的关键字与多个字符的关键字分开。下面的代码片段有效,但为此我需要在每个文档上保存两个生成的字段:

  • searchString:连接所有可搜索字段的字符串。Fe "John Doe Man Streetstreet Citycity"
  • searchArray:将上面的字符串大写并在空格('')上分割成一个数组

更新 2 - 意外行为的完整示例

使用以下文档创建集合:

在此集合上创建搜索索引“默认”:

执行以下查询:

当用户搜索“John Doe”时,此查询将返回路径“searchString”中包含“John”或“Doe”的所有文档。在此示例中,这意味着所有 3 个文档。用户输入的单词越多,返回的结果就越多。这不是预期的行为。我希望更多的词匹配更少的结果,因为搜索词变得更精确。

0 投票
1 回答
644 浏览

java - Mongodb Atlas“连接到集群时出现套接字异常”

我正在使用 Java & Springboot 和 MongoDB Atlas 并创建了一个响应许多对象的 CURD 的数据库

当我在 uploadingImage 上发布帖子时,出现此错误Got Socket exception on Connection [connectionId{localValue:4, serverValue:114406}] to cluster0-shard-00-02.1c6kg.mongodb.net:27017

但是,当我调用其他对象的 CRUD 时,它工作得很好。我不为什么它会引发这个异常。顺便说一句,当未连接到 MongoDB Atlas 时,我对所有对象的所有 CRUD 操作在 localhost 上运行良好,这意味着我的 ImageDAO 应该没问题,我只是使用了mongoTemplate.insert(Image).

我在网上搜索,他们说可能是 Atlas 的 IP 白名单,所以我将我的集群设置为对任何 IP 地址开放。

我还在我的 .properties 文件中设置了我的超时和套接字配置:spring.data.mongodb.uri=mongodb+srv://username:password@cluster0.1c6kg.mongodb.net/database?retryWrites=true&w=majority&keepAlive=真&pooSize=30&autoReconnect=真&socketTimeoutMS=361000000&connectTimeoutMS=3600000

它仍然不起作用,我认为问题肯定与套接字超时有关,但我不知道我还能在哪里配置

0 投票
1 回答
156 浏览

mongodb - Mongodb 多语言搜索:哪种模式更适合更快的搜索结果 - 嵌套或直接具有特定于语言的字段

我们正在使用 Atlas 搜索索引对产品进行模糊搜索,而对于查询,我们正在使用 Mongoose。我们想要的搜索类型包括多语言搜索,为此我们为产品使用以下模式 -

考虑到搜索性能,上述模式是否非常合适,因为读取数据会有数千或更多的点击。展望未来,搜索查询可能会达到数百万,因为它是一个电子商务系统。具有嵌套结构将有利于查询,或者我们可以选择其他选项,

  1. 使用为语言指定的简写直接具有特定于语言的字段:
  1. 具有以字段名称作为键嵌套的语言特定字段
  1. 将语言作为嵌套在该对象中的键和字段名称:

  2. 或者任何其他适合这种情况的模式?

搜索将根据用户选择的语言进行。因此,如果用户选择法语作为他的首选语言,我们将查找用户以法语输入的关键字。

PS - 除了名称和描述之外,还有更多的字段,它们也是特定于语言的。

0 投票
1 回答
456 浏览

node.js - 为什么第一次连接/请求到 MongoDB Atlas 数据库需要这么长时间?

我使用 React、Nodejs 和 Mongodb 作为数据库创建了一个 webapp。我现在正在利用免费的 MongoDB Atlas 数据库,所以我在那里创建了一个帐户和一个数据库,然后我将它与我的节点/快递服务器连接起来。

我的应用程序运行良好,我能够注册/登录用户并获取数据等。但是,第一个请求总是需要很长时间才能完成。我现在在 Heroku 上免费部署了该应用程序。当我打开应用程序并尝试登录时,第一个请求大约需要 20 秒才能完成并登录用户。在那之后,一切都运行得又好又快,所以这真的只是第一次开始。

由于我的应用程序正在运行,我不知道这里有什么问题。我唯一的猜测是这个问题特定于 MongoDB Atlas 和他们的免费数据库。

这是我用来连接数据库的代码,它非常简单:

0 投票
1 回答
189 浏览

database - 当我使用 MongoDB Atlas Search 时,如何处理本地 MongoDB 数据库中的查询?

我在看MongoDB Atlas Search。它似乎只在MongoDB Atlas Cloud.

出于开发目的,当我在本地环境中运行应用程序并使用本地 MongoDB 服务器时,这些Atlas Search查询将如何工作?

我发现2个低效的解决方案。

  1. 我放了一个标志来确定应用程序是在dev环境中还是在production环境中。但这不是一个理想的解决方案。
  2. 每个开发人员都应该将 aMongoDB Atlas Free Tier用于开发目的。

在开发环境中是否有更好的方法MongoDB Atlas Search

0 投票
1 回答
458 浏览

database - MongoDB云中的Atlas搜索过滤器可以用于日期之间的查询吗?

我在网上阅读的所有示例似乎都是指使用指南针或命令行,而不是 MongoDB 云。我尝试在搜索过滤器中模拟相同的查询代码,但没有任何运气。

搜索功能

例如样本集合..

如何过滤 saleDate 以显示 2014 年的对象?

0 投票
0 回答
310 浏览

mongodb - 在 MongoDB 的聚合管道中获取不同的文档

我正在尝试在 Atlas 文本搜索和 Mongodb 中的匹配之间进行联合,然后在添加其他阶段之前从那些中获得不同的结果。我很接近,但我想我在这里错过了一步。这就是我现在所在的地方。

} ])

这工作正常。如果搜索或匹配找到一个文档,它将被添加到聚合函数中的文档中。问题是如果在两者中都找到了该文档,那么它会在此处出现两次。

我发现没有合适的方法来添加一种在此处获取不同文档列表的方法。看来我们应该使用 $group,它几乎完成了我想要它做的事情。

我在 $unionWith 阶段之后添加了以下阶段:

这最终删除了重复项,但我现在陷入了一个结果,即我的文件不是原来的样子。现在他们看起来像{ _id: <distinctId>, doc: { all fields from document} }

基本上我希望最后一步给我每个组的第一个文档,但不包含在新的 JSON 对象中。

0 投票
0 回答
164 浏览

mongodb - MongoDB Atlas:如何将副本集成员转换为主要成员

这份文档,https ://docs.mongodb.com/manual/tutorial/force-member-to-be-primary 说,可以通过赋予它更高的 members[n].priority 值来强制副本集成员成为主要成员比集合中的任何其他成员。它适用于 MongoDB。我们使用 MongoDB Atlas。它也适用于 MongoDB Atlas 吗?

0 投票
0 回答
72 浏览

mongodb - 如何在 Parse Server 中使用 Atlas Search 高亮显示?

我正在使用带有 MongoDB Atlas 的解析服务器。我实现了一个 v3 索引(不区分变音符号),它工作正常。

在下一步中,我想突出显示搜索结果中的文本。这是我想要实现的 mondodb 文章: https ://docs.atlas.mongodb.com/reference/atlas-search/highlighting

但是在解析服务器中,我没有找到实现这一目标的方法。

我可以使用 JS preg match 突出显示文本,但 preg match 不适用于变音符号,所以我想利用 MongoDB Atlas 突出显示功能。

谢谢