标签: mongodb-indexes

Mongo唯一索引不区分大小写

@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)

是否可以创建索引大小写不敏感?现在,它是从分化NAMENAMe.保存第二个字段小写(或大写)不是我的可能.

谢谢,佩德罗

mongodb spring-data-mongodb mongodb-indexes

4
推荐指数
3
解决办法
5140
查看次数

MongoDB:为什么不按多个键排序使用索引?

问题: 我有一个非常大的集合,按字段索引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)

indexing mongodb mongodb-indexes

3
推荐指数
1
解决办法
1870
查看次数

MongoDB 多个字段的索引

我读过《MongoDB in action》一书中关于索引的章节,想知道是否有人可以扩展它关于索引的内容。

如果我有一个索引a,b,c,d,e,并且我在该索引上进行查询,a,b,c则使用该索引。如果我查询 会发生什么a,c,e?索引是仅用于查询a还是在查询其他字段时使用?

在这种情况下,将索引也放在a,c,e. 我问这个问题是因为我有一个链接到这些字段的前端部分,用户可以在其中创建自由格式的查询(a,b,c,f可能是一个)。我是否需要为所有可能出现的选项建立一个索引?

indexing mongodb mongodb-indexes

3
推荐指数
1
解决办法
3754
查看次数

为什么MongoDB不能使用与查询非常相似(不精确)的复合索引?

考虑下面的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)

mongodb explain b-tree-index mongodb-query mongodb-indexes

3
推荐指数
1
解决办法
478
查看次数

MongoDB索引相同键的不同数据类型

假设我有三个文件,其中存在"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 mongodb-indexes

3
推荐指数
1
解决办法
372
查看次数

MongoDB索引和投影

我有几个关于MongoDB的问题:

(1)索引是否有助于投影?

(2)我已经为一个集合分配了许多索引,并尝试使用sort运行查找,然后使用explain,它BtreeCursor在排序字段上显示索引.

可能是其他索引在查询部分中有所帮助,explain只是没有显示它,因为它只显示了帮助查找的最后一个索引?

或者explain应该显示有助于查询,排序等的所有索引?

谢谢.

mongodb mongodb-indexes

3
推荐指数
1
解决办法
1775
查看次数

如何正确创建索引mongodb?

让我说我有这么大的文件.

其中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)

这是错的吗 ?

在我使这个指数仍然缓慢之后.请帮我正确索引.谢谢

mongodb mongodb-query mongodb-indexes

3
推荐指数
1
解决办法
2928
查看次数

数组字段上的唯一复合索引

我正在尝试使用复合索引创建 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

mongodb compound-index mongodb-indexes

3
推荐指数
1
解决办法
1644
查看次数

如果有多个包含相同字段的索引,将使用哪个索引?

例如,以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使用第一个键,因为它可以更准确地匹配查询,还是可以随机选择这两个键中的任何一个,因为它们都可以使用?

mongodb mongodb-query mongodb-indexes

2
推荐指数
1
解决办法
1565
查看次数

MongoDB 索引构建过程以及为什么索引创建会阻止所有数据库活动

我必须为集合创建索引。我创建了它,但它影响了其他数据库中其他集合的所有请求。

从文档中,我了解到索引创建会阻止所有数据库上的所有读/写锁。mongo DB 这种行为背后的原因是什么?

  • 锁定该集合是最好的。
  • 锁定该数据库是可以接受的。
  • 锁定所有数据库让我感到困惑。

indexing mongodb mongodb-query mongodb-indexes

2
推荐指数
1
解决办法
2087
查看次数

在Mongo中,是否支持分片环境的唯一索引?

我们正在探索Mongo的新网站,我们希望确保没有两个用户使用相同的电子邮件地址注册,因此,必须在电子邮件字段中添加唯一索引.

是否在分片的Mongo环境中支持?Mongo文档声明支持唯一索引,但没有提及分片.

http://www.mongodb.org/display/DOCS/Indexes#Indexes-UniqueIndexes

indexing sharding mongodb mongodb-indexes

1
推荐指数
1
解决办法
848
查看次数

联合指数如何在mongodb中运作?

在这个问题的评论中,我知道如何为排序操作创建索引:Mongodb索引如何工作?

  1. 但我想知道,当我们在a&上创建联合索引时b,它与简单索引的工作方式有何不同?

  2. 为什么我们只是在寻找中受益a,但如果我们发现b,我们没有从中获益?无论是联合索引就像是串联ab,所以我们会得到好处,从它的前缀?

indexing mongodb mongodb-indexes

1
推荐指数
1
解决办法
419
查看次数

Mongodb 索引并搜索逗号分隔值

我有如下结构

{
  "name": "",
  "age": 35,
  "hobbies": "gardening, skiing, horse riding, soccer",
  "Address": {
    "addrline 1": "",
    "addrline 2": "",
    "City": "",
    "Zip": ""
  }
}
Run Code Online (Sandbox Code Playgroud)

想根据爱好搜索。例如,输入“滑雪”应返回此文档。我有大约 80k 条记录。什么是“爱好”元素的最佳索引策略,以便它可以快速返回结果。

我是否必须仅通过基于字符串的正则表达式模式来搜索“爱好”,还是有任何其他技术可以更快地检索数据?

mongodb mongodb-query mongodb-indexes

0
推荐指数
1
解决办法
664
查看次数