标签: mongodb-indexes

MongoException:带名称的索引:代码已存在,具有不同的选项

我有一个具有以下结构的mongodb集合term

{
    "_id" : "00002c34-a4ca-42ee-b242-e9bab8e3a01f",
    "terminologyClass" : "USER",
    "code" : "X67",
    "terminology" : "some term related notes",
    "notes" : "some notes"
}
Run Code Online (Sandbox Code Playgroud)

和一个表示术语集合的java类 Term.java

@Document
public class Term{  

    @Id
    protected String termId;

    @Indexed
    protected String terminologyClass;

    @Indexed(unique=true)
    protected String code;

    @Indexed
    protected String terminology;

    protected String notes;

    //getters & setters
}
Run Code Online (Sandbox Code Playgroud)

term收藏了很多文件.现在我添加了一个新字段Term.javaas

@Indexed
protected String status;
Run Code Online (Sandbox Code Playgroud)

添加字段statusTerm.java,在向term集合中插入新术语时,我得到了一个例外:

com.mongodb.MongoException:带名称的索引:代码已经存在,具有不同的选项

我使用的是MongoDB版本:2.6.5和spring-data-mongodb版本:1.3.2

mongodb mongodb-java spring-data-mongodb mongodb-indexes

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

为什么MongoDB不使用Index Intersection?

我正在尝试重现索引交集指令的第一个示例(http://docs.mongodb.org/manual/core/index-intersection/)但面临一个问题:mongo不使用这两个索引

我的步骤:

  1. 下载mongo(3.0.3)并安装它
  2. 运行mongod:mongod.exe --dbpath d:\ data(文件夹为空)
  3. 运行mongo:mongo.exe
  4. 添加索引:

    db.orders.ensureIndex({ qty: 1 })
    db.orders.ensureIndex({ item: 1 })
    db.orders.getIndexes()
    [{
            "v" : 1,
            "key" : {
                    "_id" : 1
            },
            "name" : "_id_",
            "ns" : "test.orders"
    },
    {
            "v" : 1,
            "key" : {
                    "qty" : 1
            },
            "name" : "qty_1",
            "ns" : "test.orders"
    },
    {
            "v" : 1,
            "key" : {
                    "item" : 1
            },
            "name" : "item_1",
            "ns" : "test.orders"
    }]
    
    Run Code Online (Sandbox Code Playgroud)
  5. 检查查询说明:

    db.orders.find( { item: "abc123", qty: …
    Run Code Online (Sandbox Code Playgroud)

indexing mongodb database-indexes mongodb-indexes

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

MongoDB:数据分区上的磁盘 I/O % 利用率已经消失

上次我从 MongoDB Atlas 收到警报时:

Disk I/O % utilization on Data Partition has gone above 70 on nvme2n1 
Run Code Online (Sandbox Code Playgroud)

但我不知道如何本地化/查询/索引/部分代码/有问题的集合。

我可以通过什么方式进行任何分析以找出问题的根本原因?

mongodb database-performance mongodb-query mongodb-indexes mongodb-atlas

9
推荐指数
2
解决办法
1217
查看次数

MongoDB - 唯一索引与复合索引

假设一个包含3个字段的假设文档:

  1. _id:ObjectId
  2. emailAddress:string
  3. 帐号:字符串

现在,给定一个关于emailAddress和帐户的查询,以下两个索引中的哪一个将表现更好:

  1. 仅限emailAddress上的唯一索引(假设它是一个唯一字段)
  2. 帐户和emailAddress上的复合索引

mongodb mongodb-indexes

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

mongodb/mongoose中的部分索引

在稀疏索引文档中,我发现有关mongodb 3.2部分索引的注释

在3.2版中更改:从MongoDB 3.2开始,MongoDB提供了创建部分索引的选项.部分索引提供了稀疏索引功能的超集.如果您使用的是MongoDB 3.2或更高版本,则部分索引应优先于稀疏索引.

部分索引非常有用,我想在我的项目中使用它们.是否有可能与猫鼬一起使用?

indexing mongoose mongodb node.js mongodb-indexes

7
推荐指数
3
解决办法
3113
查看次数

对多键索引进行慢速查询

我有一个名为MongoDB的集合post3500万级的对象.该集合有两个二级索引,定义如下.

> db.post.getIndexKeys()
[
    {
        "_id" : 1
    },
    {
        "namespace" : 1,
        "domain" : 1,
        "post_id" : 1
    },
    {
        "namespace" : 1,
        "post_time" : 1,
        "tags" : 1  // this is an array field
    }
]
Run Code Online (Sandbox Code Playgroud)

我希望以下查询,只需过滤namespacepost_time,在合理的时间内运行而不扫描所有对象.

>db.post.find({post_time: {"$gte" : ISODate("2013-04-09T00:00:00Z"), "$lt" : ISODate("2013-04-09T01:00:00Z")}, namespace: "my_namespace"}).count()
7408
Run Code Online (Sandbox Code Playgroud)

然而,MongoDB需要至少十分钟来检索结果,奇怪的是,它设法根据功能扫描7000万个对象来完成工作explain.

> db.post.find({post_time: {"$gte" : ISODate("2013-04-09T00:00:00Z"), "$lt" : ISODate("2013-04-09T01:00:00Z")}, namespace: "my_namespace"}).explain()
{
    "cursor" : "BtreeCursor namespace_1_post_time_1_tags_1",
    "isMultiKey" : true, …
Run Code Online (Sandbox Code Playgroud)

indexing mongodb mongodb-indexes

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

如何定义复合和散列的 mongodb 索引?

我知道复合索引是这样定义的:

db.products.ensureIndex( { "item": 1, "stock": 1 } )
Run Code Online (Sandbox Code Playgroud)

并散列一个像这样的简单索引:

db.active.ensureIndex( { item: "hashed" } )
Run Code Online (Sandbox Code Playgroud)

问题是如何实现两者?

mongodb mongodb-indexes

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

MongoDB 2dsphere索引失败(格式错误的几何?)

我目前正在尝试构建一个2dsphere索引,但创建似乎失败了.

索引创建失败的文档是有效的geojson(根据geojsonlint).

另据我所知,它遵循MongoDB"Polygon"规则.

我很感激任何帮助,因为我无法弄清楚为什么索引创建似乎失败了.

提前致谢!

db.poly.ensureIndex( { loc: "2dsphere" } )
{
        "createdCollectionAutomatically" : false,
        "numIndexesBefore" : 1,
        "ok" : 0,
        "errmsg" : "Can't extract geo keys from object, malformed geometry?: { _
id: 353, loc: { type: \"Polygon\", coordinates: [ [ [ 8.090732000000001, 53.6379
766 ], [ 8.050639500000001, 53.6250853 ], [ 8.036974600000001, 53.6286108 ], [ 7
.994035500000001, 53.6016978 ], [ 8.0120927, 53.59855020000001 ], [ 8.0102720000
00001, 53.5883803 ], [ 8.023379, 53.5867745 ], [ 8.0148004, 53.5832729 ], [ 8.02
6839500000001, …
Run Code Online (Sandbox Code Playgroud)

mongodb geojson mongodb-indexes 2dsphere

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

获取Meteor中的集合索引列表

如何使用Meteor获取集合上的索引列表?
类似于(或者可能基于代理)Mongo的 东西在Meteor中还没有太多的索引API(最终会有一个); 但我希望有人已经解决了这个问题 干杯db.collection.getIndexes

javascript mongodb meteor mongodb-indexes

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

在mongo中创建一个条件TTL

我想完成一项特殊的任务,但我没有找到任何特定的方法来做到这一点.假设我有一个用于发送邮件的应用程序.我在mongo的一个集合中记录了这些邮件.使用这个应用程序,我现在可以发送邮件或可以安排邮件将来.集合中的文档结构如下:

{
'_id' : 123456789,
'to_email' : 'xyz@gmail.com'
'from_email' : 'abc@gmail.com'
'subject': 'some subject'
'type' : '<1 if normal and 2 if scheduled>',
'createdDate' '<date when mail was sent or the request was created>',
'scheduledDate' : '<time for which mail is scheduled>'
.. and many more key-value pairs
}
Run Code Online (Sandbox Code Playgroud)

scheduledDate字段可以是零或任何日期,具体取决于是否已计划.我不想保留超过2天的数据,所以我在'createdDate'上创建了一个TTL索引,为期2天.但我也不想删除将来安排的行或请求.我正在寻找某种条件TTL,但无法找到任何这样的解决方案.

是否有任何可用的条件TTL或任何其他方式在mongodb中做到这一点.

我想创建一个TTL,其工作方式如下:

if(requestType!=2 and createdDate < -2days)
delete row;
Run Code Online (Sandbox Code Playgroud)

或者有没有办法可以使用任何语言对某些文档进行更改,以便它们不会过期.

编辑:我通过在预定邮件的情况下使用scheduledDate和requestDate的相同值解决了这个问题.

mongodb mongodb-query mongodb-indexes

6
推荐指数
2
解决办法
8681
查看次数