MongoDb索引已经存在

时间:2016-07-09 07:39:54

标签: mongodb indexing

当我使用ensureIndex时,我收到了一条消息,

  

"所有索引已经存在"。

getIndexes()中没有任何内容。为什么?有人可以帮帮我吗?

mongos> db.UserBase.ensureIndex({"userId":1}, {"unique":true})
{
    "raw" : {
        "shard2/192.168.2.69:27024,192.168.254.107:27024,192.168.254.108:27024" : {
            "createdCollectionAutomatically" : false,
            "numIndexesBefore" : 2,
            "numIndexesAfter" : 2,
            "note" : "all indexes already exist",
            "ok" : 1,
            "$gleStats" : {
                "lastOpTime" : Timestamp(1468049378, 96),
                "electionId" : ObjectId("7fffffff0000000000000014")
            }
        }
    },
    "ok" : 1
}
mongos> db.UserBase.getIndexes()
[ ]

2 个答案:

答案 0 :(得分:2)

也许this会回答你的问题?

  

<强>考虑

     

在3.0.0版本中更改。

     

对于使用WiredTiger存储引擎的MongoDB 3.0部署,   如果你从一个版本运行db.collection.getIndexes()   {3.0}之前的mongo shell或3.0 compatible version之前的驱动程序版本,db.collection.getIndexes()将返回no   数据,即使存在现有索引。有关更多信息,请参阅   WiredTiger and Driver Version Compatibility

尝试使用db.collection.createIndex()

答案 1 :(得分:2)

如果您使用的MongoDB高于3.0.0版,则可能需要考虑使用db.UserBase.createIndex({"userId":1}, {"unique":true})。 {@ 1}}已被弃用。

来源: https://docs.mongodb.com/manual/reference/method/db.collection.ensureIndex/