问题标签 [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.
mongodb - 在 Mongo 中,分片环境是否支持唯一索引?
我们正在探索 Mongo 的新网站,我们希望确保没有两个用户使用相同的电子邮件地址注册,因此,电子邮件字段上的唯一索引是必要的。
这在分片的 Mongo 环境中是否支持?Mongo 文档声明支持唯一索引,但没有提及分片。
http://www.mongodb.org/display/DOCS/Indexes#Indexes-UniqueIndexes
mongodb - mongodb:如何在复合索引组成的_id索引中添加一个字段
我无法删除 _id 索引,为什么?
当我尝试运行该dropIndexes
命令时,它会删除所有索引,但不会删除 _id 索引。
做'db.runCommand'
也不起作用:
不好。
我可以在复合索引中使用包含 _id 的字段吗?
我在网上找不到任何东西,该ensureindex
命令无法执行。
db.fs_files.ensureIndex({'_id':1, 'created':1});
上面的命令刚刚创建了一个新的复合索引。我还没有找到一些类似的“创建索引”命令。
默认 _id 索引是唯一索引吗?
getIndexes
返回它不是唯一索引。
mongodb - 针对计数器字段构建索引
对于用作计数器的字段,即值将随着时间而改变,并将用于返回有序实体(将针对过滤实体对该字段进行排序),我们是否应该为该字段建立索引?
mongodb - 是否建议为查询创建两个单独的索引以过滤一个字段并在另一个字段上排序?
我有一个类似于以下的查询
是否建议分别为字段 a 和 b 创建索引?
mongodb - 对象数组与对象上的 Mongo 索引
我正在实现一个处理相当多字段的联系人数据库。它们中的大多数是预定义的,可以认为是绑定的,但也有一些不是。我们将这些字段之一称为“组”。我们目前实现它的方式是(每个文档/联系人都有“组”字段):
但经过一些阅读后,我似乎应该这样做:
然后应用索引db.contact.ensureIndex({'groups.id':1});
我的问题是关于功能的。这两种结构之间有什么区别以及索引是如何实际构建的(它是简单地在每个文档/联系人中建立索引,还是构建一个包含所有文档/联系人的所有组的完整索引?)。
我假设这是结构上最好的方式,但如果我不正确,请告诉我。
mongodb - MongoDB - 唯一索引与复合索引
假设一个具有 3 个字段的假设文档:
- _id : 对象ID
- 电子邮件地址:字符串
- 帐户:字符串
现在,给定一个关于 emailAddress AND account 的查询,以下两个索引中哪个会执行得更好:
- emailAddress 上的唯一索引(假设它是唯一字段)
- account 和 emailAddress 的复合索引
mongodb - mongodb:非性能索引
玩过之后
db.largecollection.find( { $or : [ { identifierX : "sha1_hash123" } , { identifierY : "md5_hash456" } , { identifierZ : "another_hash789" } ] } )
我检查了 mongodb 自动准备的索引。除了标识符 x/y/z 的“单个”ensureIndex 之外,现在还有一个标识符 X_1_identifierY_1_identifierZ_1 并且性能下降:-(
您是否有想法或提示如何向 mongodb 解释使用单个标识符的索引更快,因为我没有 $and,但是 $or 查询?
谢谢
mongodb - Mongo 三重复合指数
如果您有一个双复合索引 { a : 1, b : 1},那么对我来说,如果您单独查询b将不会使用该索引(即您不能在查询中“跳过” a)。但是,如果您单独查询a ,则将使用该索引。
但是,给定一个三重复合索引 { a : 1, b: 1, c: 1} 我的解释命令显示当您查询a和c时使用该索引(即您可以在查询中“跳过” b)。
Mongo 如何在查询ac时使用abc索引,在这种情况下索引的效果如何?
背景:
我的用例是有时我想查询 a,b,c,有时我想查询 a,c。现在我应该只在 a、b、c 上创建 1 个索引,还是应该在 a、c 上创建一个索引,在 a、b、c 上创建一个?
(在 a,c,b 上创建索引没有意义,因为c是具有良好选择性的多键索引。)
mongodb - 如何重新索引默认的 Mongo 索引?
好吧,我正在修复一个拥有 1 亿条记录的 MongoDB 集合。以前的开发人员用真正错误的东西覆盖了默认的_id。现在,当我修复它时,如何重新生成 _id 索引?除了 mongoRestore,还有什么更快的方法吗?
这是我的更新程序:
1)将数据库从原始数据库复制到另一个数据库。
2)删除所有记录的_id。
3)为所有记录重新生成_id(这就是我不知道该怎么做)
4)使用新的_id将集合复制回原始数据库(或者另一种方式是从新的/临时数据库中制作mongoDump,然后将文件发送到原始数据库,MongoRestore即(然后每条记录将具有新的_id。那方法可行,但似乎更慢。)
mongodb - Mongo索引详细
我有 mongo db 集合,如下所示
我必须创建一个索引
但我看到的是值 X: 1, Y:1, Z:1 将导致冗余,并且我打算用于排序的唯一时间参数正在改变。有没有更好的方法来创建上述索引,这样我就不必创建三个单独的索引。
还说如果我有索引
我希望 Mongo 返回结果,使得 x = 5,y = 任何值,Z = 4,sort = T_update 上述索引是否有用,或者我应该创建一个索引,例如
我希望我能避免它。