问题标签 [mongodb-indexes]

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 回答
169 浏览

mongodb - 增强 MongoDB 索引的建议

我们从“索引基数”视频 [M101J:面向 Java 开发人员的 MongoDB] 中学到的一件事是,当具有多键索引的文档被移动时,他的所有索引也必须更新,这会产生很大的开销。

我认为有可能以某种方式绕过这个约束。显而易见的解决方案是添加另一个间接级别(这是解决计算机科学问题的著名模式:-)),而不是直接从索引中引用文档,我们为每个引用该文档并获取索引的文档创建一个实体引用那个实体,现在当我们移动文档时,我们只需要修改那个实体(实体永远不会移动,因为它的 BSON 形状总是相同的)。这个解决方案的问题当然是用空间换性能(索引也有这个问题)。

但是所有的希望都没有消失;在 MongoDB 中,所有文档都有一个不可变的 _id 字段,该字段会被自动索引。鉴于这一切,我们知道如果一个文档被移动,其关联的 _id 索引也将被更新,那么为什么不让所有其他索引引用文档的相应 _id 索引呢?

鉴于此解决方案,文档移动时唯一会更新的索引是 _id 索引。

我想知道这个解决方案是否可以在 MongoDB 中实现,或者是否有一些隐藏的陷阱使它不切实际?

谢谢

0 投票
2 回答
338 浏览

spring - Mongodb唯一索引

我试图基于两个字段创建一个唯一的多键索引:

我的文件:

我已经确保我的邮件有一个唯一的索引。现在我想为每个“idCommande”创建一个唯一的约束,那么就不可能在我的用户的“命令”中创建一个具有相同“idCommande”的“命令”。

我试过了

并且 :

但我仍然可以插入相同的“idCommande”。

我知道 addToSet 存在,但我不想限制我的全局文档

你有什么想法吗?

提前致谢

0 投票
1 回答
444 浏览

mongodb - MongoDB ensureIndex 是否执行重建?

我正在阅读 MongoFB 文档。在这个网址 http://docs.mongodb.org/manual/tutorial/build-indexes-on-replica-sets/ 我读到 “使用 mongo shell 中的 ensureIndex() 或驱动程序中的类似方法创建新索引. 此操作将在此 mongod 实例上创建或重建索引"

我明白吗?如果索引已经存在,mongoDB 是否执行重建?

因此,与“reIndex()”的区别在于 reIndex() 对集合的所有索引执行重建。这是对的吗?

0 投票
1 回答
112 浏览

mongodb - MongoDB:分片系统无法强制执行集群范围的唯一索引

来自 mongoDB 文档(http://docs.mongodb.org/manual/core/sharding-shard-key/)我正在阅读

除非唯一字段在分片键中,否则分片系统无法强制执行集群范围的唯一索引。

我不太清楚。如果我有以下唯一索引 {a,b,c,d} 和分片键 {a,b},

{a,b,c,d} 的唯一性是否在所有集群中得到尊重?

0 投票
1 回答
1890 浏览

mongodb - Mongodb使用错误的索引

我在一个集合上有多个索引,如下所示。特别是我想要一个查询使用"gTs_1_RE_H_1_l_1",但查询正在使用"gTs_1"

在这里,我有一个单独的 ' ' 索引(基于 TTL 的索引)和一个以 ' ' 和 ' ' 作为前两个键gTs的复合索引。( )gTsRE_H"gTs_1_RE_H_1_l_1"

现在,我正在尝试执行此查询:

据我所知,这应该使用"gTs_1_RE_H_1_l_1",但令人惊讶的是,它正在使用, "gTs_1"如此输出所述:

但是,如果我提供提示,它确实会选择正确的索引。因此,如果我运行以下查询:

我得到以下输出:

有人可以帮我了解发生了什么!

0 投票
2 回答
156 浏览

mongodb - 如何在Mongodb中使用全文搜索字段的未知数量的孩子?

我有一个包含description这样一个字段的文档:

如何创建文本索引description并搜索特定单词?不知道深度能description走多远,描述的孩子会有多少。我尝试像这样创建索引:

然后像这样查询:

但它不起作用。

0 投票
2 回答
2437 浏览

php - 没有有效的分片键,MongoDB 无法更新某些内容

抱歉,但我是 MongoDB 的新手,我想我了解分片的概念,以及如何通过散列分片键在服务器之间分布数据 - 但是我不确定您如何知道要查询哪个分片。

例如 - 我有一个用户集合,它是分片的,并且有一个 _id_hashed 的索引(到目前为止很好 - 用户分布均匀良好)然后我需要让那些在一段时间内处于非活动状态的用户超时

我收到以下错误:

但是我不知道要查询的id,而且session数据会发生变化,所以不能作为shard key

这是我的数据结构或查询的问题吗?

0 投票
0 回答
171 浏览

mongodb - 当没有任何重复项时,Mongo 会崩溃

我们的副本集仅包含 mongo server 2.6(我们已在一周前升级)。我们在虚拟机上运行 Windows Server 2008。最近我们注意到一个相当烦人的问题:我们有一个名为 items_full 的集合,它在字段 sku 上有一个唯一索引。当我们运行以下更新查询时:

它因错误而崩溃:

E11000 重复键错误索引:

inventory.items_full.$sku_1 复制键:{:“DSSWI#Luc_W_Lp-12550-Gy-014-Gy”}

当我查找上述 sku 时,我只得到 1 个结果。有任何想法吗?

谢谢

0 投票
4 回答
4947 浏览

mongodb - MongoDB 2dsphere index fails (malformed geometry?)

I'm currently trying to build an 2dsphere index, but the creation seems to fail.

The document on which the index creation fails is valid geojson (according to geojsonlint).

Also as far as I can see it obeys the MongoDB "Polygon" rules.

I would appreciate any help, since I can't figure out why the index creation seems to fail.

Thanks in advance!

0 投票
0 回答
51 浏览

mongodb - 构建涵盖查询的索引

我们的应用程序中的步骤是:

  1. 正在获取推文并将其存储在 MongoDB 集合中。搜索推文
  2. 从 search_tweets 读取数据,计算几个参数并将结果存储在不同的集合中。Twitter_Processed。这个系列的没有少得多。键,其中大部分是计算字段

示例文档 - search_tweets

示例文档 - Twitter_Processed

阅读文档后,我应该如何构建索引/几个索引:

  • 在 find/$match 中,使用键“searchProfileId”和“schedularId”
  • 返回键“text”、“user”(有几个子文档)、“searchProfileId”、“schedularId”和“uniqueId”、“id_str”
  • “文本”的推文是随机的 - 将其包含在复合索引中是否有意义?如果没有,是否会以任何方式构建文本索引帮助(在“文本”的值内不进行文本搜索)

基本上,我想确保查询被覆盖。