当我使用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()
[ ]
答案 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
答案 1 :(得分:2)
如果您使用的MongoDB高于3.0.0版,则可能需要考虑使用db.UserBase.createIndex({"userId":1}, {"unique":true})
。 {@ 1}}已被弃用。
来源: https://docs.mongodb.com/manual/reference/method/db.collection.ensureIndex/