While saving a collection MongoDB is creating Index name which is too long and exceeds 127 bytes limit. How to solve this. can i disable indexing? While saving a collection MongoDB is creating Index name which is too long and exceeds 127 bytes limit. How to solve this. can i disable indexing? mongodb mongodb

While saving a collection MongoDB is creating Index name which is too long and exceeds 127 bytes limit. How to solve this. can i disable indexing?


You can pass an index name as parameter to ensureIndex:

db.collection.ensureIndex({"birds.parrots.macaw.blue.id": 1}, {name:"myIndex1"});db.collection.ensureIndex({"birds.parrots.macaw.blue.id": 1, "field2": 1}, {name:"myIndex1"});


record my case for other refer:

  • my case: code
        indexKeyList = [            ("shortLink", pymongo.ASCENDING),            ("parsedLink.isParseOk", pymongo.ASCENDING),            ("parsedLink.errType", pymongo.ASCENDING),            ("parsedGame.realGameName", pymongo.ASCENDING),            ("parsedGame.gameTheme", pymongo.ASCENDING),        ]        mongoCollectionShortlink.create_index(indexKeyList)
  • report error:
发生异常: OperationFailurenamespace name generated from index name "shortLink.gameShortLink.$shortLink_1_parsedLink.isParseOk_1_parsedLink.errType_1_parsedGame.realGameName_1_parsedGame.gameTheme_1" is too long (127 byte max), full error: {'ok': 0.0, 'errmsg': 'namespace name generated from index name "shortLink.gameShortLink.$shortLink_1_parsedLink.isParseOk_1_parsedLink.errType_1_parsedGame.realGameName_1_parsedGame.gameTheme_1" is too long (127 byte max)', 'code': 67, 'codeName': 'CannotCreateIndex'}
  • root cause: use create_index to create multiple index. then multiple index name joined together, cause name too long, exceed 127 byte limit

  • Solution: should use create_indexes

import pymongofrom pymongo import IndexModel        indexShortLink = IndexModel([("shortLink", pymongo.ASCENDING)], name="shortLink")        indexIsParseOk = IndexModel([("parsedLink.isParseOk", pymongo.ASCENDING)], name="parsedLink_isParseOk")        indexErrType = IndexModel([("parsedLink.errType", pymongo.ASCENDING)], name="parsedLink_errType")        indexRealGameName = IndexModel([("parsedGame.realGameName", pymongo.ASCENDING)], name="parsedGame_realGameName")        indexGameTheme = IndexModel([("parsedGame.gameTheme", pymongo.ASCENDING)], name="parsedGame_gameTheme")        indexModelList = [            indexShortLink,            indexIsParseOk,            indexErrType,            indexRealGameName,            indexGameTheme,        ]        mongoCollectionShortlink.create_indexes(indexModelList)


You can not disable indexing as MongoDB will always create an index for _id. Shorten your collection name instead - saves you some typing too