@CompoundIndexes({
@CompoundIndex(name = "fertilizer_idx",
unique = true,
def = "{'name': 1, 'formula': 1, 'type': 1}")
})
public class Fertilizer extends Element implements Serializable {
//class stuff
}
Run Code Online (Sandbox Code Playgroud)
是否可以创建索引大小写不敏感?现在,它是从分化NAME到NAMe.保存第二个字段小写(或大写)不是我的可能.
谢谢,佩德罗
问题:
我有一个非常大的集合,按字段索引ts:(时间戳)
> db.events.ensureIndex({'ts': -1})
Run Code Online (Sandbox Code Playgroud)
我想获得最后5个条目.让我感到惊讶的是,查询不使用索引,因此非常慢:
> db.events.find().sort({'ts': -1, '_id': -1}).limit(5)
Run Code Online (Sandbox Code Playgroud)
但是,仅按ts或其他字段排序使用索引:
> db.events.find().sort({'ts': -1}).limit(5)
> db.events.find().sort({'_id': -1}).limit(5)
Run Code Online (Sandbox Code Playgroud)
这是MongoDB中的一个错误,这确实是一个记录的功能还是我做错了什么?
附加信息:
> db.events.find().sort({'ts': -1, '_id': -1}).limit(5).explain()
{
"cursor" : "BasicCursor",
"nscanned" : 795609,
"nscannedObjects" : 795609,
"n" : 5,
"scanAndOrder" : true,
"millis" : 22866,
"nYields" : 73,
"nChunkSkips" : 0,
"isMultiKey" : false,
"indexOnly" : false,
"indexBounds" : {
}
}
> db.events.find().sort({'ts': -1}).limit(5).explain()
{
"cursor" : "BtreeCursor ts_-1",
"nscanned" : 5,
"nscannedObjects" : 5,
"n" …Run Code Online (Sandbox Code Playgroud) 我读过《MongoDB in action》一书中关于索引的章节,想知道是否有人可以扩展它关于索引的内容。
如果我有一个索引a,b,c,d,e,并且我在该索引上进行查询,a,b,c则使用该索引。如果我查询 会发生什么a,c,e?索引是仅用于查询a还是在查询其他字段时使用?
在这种情况下,将索引也放在a,c,e. 我问这个问题是因为我有一个链接到这些字段的前端部分,用户可以在其中创建自由格式的查询(a,b,c,f可能是一个)。我是否需要为所有可能出现的选项建立一个索引?
考虑下面的Mongo索引策略和查询,
指数:
db.collec.ensureIndex({a:1,b:1,c:1});
Run Code Online (Sandbox Code Playgroud)
查询:
db.collec.find({"a":"valueA"},{"_id":0,"a":1,"c":1}).sort({"c":-1}).limit(150)
Run Code Online (Sandbox Code Playgroud)
上述查询的解释返回:
/* 0 */
{
"cursor" : "BtreeCursor a_1_b_1_c_1",
"isMultiKey" : false,
"n" : 150,
"nscannedObjects" : 178,
"nscanned" : 178,
"nscannedObjectsAllPlans" : 279,
"nscannedAllPlans" : 279,
"scanAndOrder" : true,
"indexOnly" : true,
"nYields" : 0,
"nChunkSkips" : 0,
"millis" : 1,
"indexBounds" : {
"a" : [
[
"valueA",
"valueA"
]
],
"b" : [
[
{
"$minElement" : 1
},
{
"$maxElement" : 1
}
]
],
"c" : [
[
{
"$minElement" …Run Code Online (Sandbox Code Playgroud) 假设我有三个文件,其中存在"B"字段.这三种都有3种不同的数据类型.索引BTREE如何存储?将"B"作为索引键是有效的吗?
例.
{_id:"1",a:1,b:"abc" } //B is string here
{_id:"1",a:1,b:[1,2,3] } //B is array of numbers
{_id:"1",a:1,b:{x:1,y:"a"} } //B is another nested document
Run Code Online (Sandbox Code Playgroud) 我有几个关于MongoDB的问题:
(1)索引是否有助于投影?
(2)我已经为一个集合分配了许多索引,并尝试使用sort运行查找,然后使用explain,它BtreeCursor在排序字段上显示索引.
可能是其他索引在查询部分中有所帮助,explain只是没有显示它,因为它只显示了帮助查找的最后一个索引?
或者explain应该显示有助于查询,排序等的所有索引?
谢谢.
让我说我有这么大的文件.
其中2个得到了这个对象数组;
{
status: "A",
group: "public",
"created.dt": ....
}
{
status: "A",
group: "private",
"created.dt": ....
}
Run Code Online (Sandbox Code Playgroud)
我索引并确保这样:
db.collection.ensureIndex({"created.dt":-1});
db.collection.ensureIndex({"created.dt":-1, "status":1});
db.collection.ensureIndex({"created.dt":-1, "group":1});
db.collection.ensureIndex({"created.dt":-1, "status":1, "group":1});
Run Code Online (Sandbox Code Playgroud)
查询:
db.collection.find(
{
"status": {
$in: ["A", "I"]
},
"asset_group": "public"
},
{
sort: {
'created.dt':1
}
}
).count();
Run Code Online (Sandbox Code Playgroud)
这是错的吗 ?
在我使这个指数仍然缓慢之后.请帮我正确索引.谢谢
我正在尝试使用复合索引创建 mongo 文档。我的示例文档如下所示
{ fname: "fname1", lname: "lname1", 任务: ["t11", "t12", "t13"] }
{ fname: "fname2", lname: "lname2", 任务: ["t21", "t22", "t23"] }
{ fname: "fname3", lname: "lname3", 任务: ["t31", "t32", "t33"] }
和索引如下
createIndex({ fname: 1, lname: 1, task: 1 }, { unique: true, name: 'some-index-name'})
我期待的是
如果有任何变化
应被视为唯一文件。
我收到此异常“ E11000 重复键错误集合”
我查看了空闲链接。但无法弄清楚。
https://docs.mongodb.com/manual/core/index-partial/
https://docs.mongodb.com/manual/indexes/#create-an-index
Mongo 代码库:https : //github.com/mongodb/mongo/blob/69dec2fe8fed6d32ec4998ea7ec7ab063cb5b788/src/mongo/db/catalog/index_catalog.cpp#L422
例如,以find()一个顺序涉及一个字段a和的a为例b。例如,
db.collection.find({'a':{'$lt':10},'b':{'$lt':5}})
Run Code Online (Sandbox Code Playgroud)
我的集合索引数组中有两个键:
[
{
"v" : 1,
"key" : {
"a" : 1,
"b" : 1
},
"ns" : "x.test",
"name" : "a_1_b_1"
},
{
"v" : 1,
"key" : {
"a" : 1,
"b" : 1,
"c" : 1
},
"ns" : "x.test",
"name" : "a_1_b_1_c_1"
}
]
Run Code Online (Sandbox Code Playgroud)
是否可以确保 mongo使用第一个键,因为它可以更准确地匹配查询,还是可以随机选择这两个键中的任何一个,因为它们都可以使用?
我必须为集合创建索引。我创建了它,但它影响了其他数据库中其他集合的所有请求。
从文档中,我了解到索引创建会阻止所有数据库上的所有读/写锁。mongo DB 这种行为背后的原因是什么?
我们正在探索Mongo的新网站,我们希望确保没有两个用户使用相同的电子邮件地址注册,因此,必须在电子邮件字段中添加唯一索引.
是否在分片的Mongo环境中支持?Mongo文档声明支持唯一索引,但没有提及分片.
http://www.mongodb.org/display/DOCS/Indexes#Indexes-UniqueIndexes
在这个问题的评论中,我知道如何为排序操作创建索引:Mongodb索引如何工作?
但我想知道,当我们在a&上创建联合索引时b,它与简单索引的工作方式有何不同?
为什么我们只是在寻找中受益a,但如果我们发现b,我们没有从中获益?无论是联合索引就像是串联a和b,所以我们会得到好处,从它的前缀?
我有如下结构
{
"name": "",
"age": 35,
"hobbies": "gardening, skiing, horse riding, soccer",
"Address": {
"addrline 1": "",
"addrline 2": "",
"City": "",
"Zip": ""
}
}
Run Code Online (Sandbox Code Playgroud)
想根据爱好搜索。例如,输入“滑雪”应返回此文档。我有大约 80k 条记录。什么是“爱好”元素的最佳索引策略,以便它可以快速返回结果。
我是否必须仅通过基于字符串的正则表达式模式来搜索“爱好”,还是有任何其他技术可以更快地检索数据?