sql >> Database teknologi >  >> NoSQL >> MongoDB

MongoDB-tekstindeksfejl:sprogtilsidesættelse understøttes ikke

Løsning:

Indstil default_language og language_override til samme bogstavelige værdi (i dit tilfælde "en").

Hvordan jeg kom hertil...

Jeg ramte det samme problem, også på Mongo 2.6.1.

I mit tilfælde oprettede jeg indekset med en language_override peger på et sprogfelt, hvor der allerede var dokumenter med ikke-understøttede værdier (f.eks. 'ar' - arabisk).

Sådan oprettede jeg indekset:

db.users.ensureIndex({ 
  "displayName": "text", 
  "about": "text", 
  "email": "text" 
}, { 
  "name": "users_full_text", 
  "default_language": "en",
  "language_override": "language"
});

Jeg håbede, at det ville falde tilbage til default_language når language_override værdi er ikke understøttet, men tilsyneladende ikke. Her er hvad Mongo siger:

{
  "createdCollectionAutomatically" : false,
  "numIndexesBefore" : 3,
  "ok" : 0,
  "errmsg" : "language override unsupported: ar",
  "code" : 17262
}

OK, fint, så indekset blev ikke oprettet, men jeg burde være i stand til at oprette det uden language_override, ikke? Forkert - mongo giver mig den samme fejl selvom jeg ikke længere har den specificerede language_override .

Det mislykkede forsøg på at oprette indekset ser ud til at have efterladt en ødelagt version af indekset, som ikke vises nogen steder, så jeg kan ikke slippe det (det vises ikke i db.users.getIndexes() og at droppe det ved navn virker ikke).

Til sidst lykkedes det mig at rette indekset ved at indstille language_override til den bogstavelige værdi 'en', sådan her:

db.users.ensureIndex({ 
  "displayName": "text", 
  "about": "text", 
  "email": "text" 
}, { 
  "name": "users_full_text", 
  "default_language": "en",
  "language_override": "en" 
});  

... hvortil Mongo svarer:

{
  "createdCollectionAutomatically" : false,
  "numIndexesBefore" : 3,
  "numIndexesAfter" : 4,
  "ok" : 1
}

Hurra.



  1. MongoDB findOneAndReplace()

  2. Implementer referencesæt i Redis

  3. Sådan installeres MongoDB 4.2 på RedHat/CentOS 7-systemer

  4. Lagring af et dybt bibliotekstræ i en database