MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Błąd indeksu tekstu MongoDB:zmiana języka nie jest obsługiwana

Rozwiązanie:

Ustaw domyślny_język i language_override do tej samej wartości dosłownej (w twoim przypadku "en").

Jak się tu dostałem...

Trafiłem na ten sam problem, także na Mongo 2.6.1.

W moim przypadku utworzyłem indeks z language_override wskazując na pole języka, w którym były już dokumenty z nieobsługiwanymi wartościami (np. „ar” – arabski).

Oto jak tworzyłem indeks:

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

Miałem nadzieję, że powróci do default_language kiedy language_override wartość nie jest obsługiwana, ale najwyraźniej nie. Oto, co mówi Mongo:

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

OK, dobrze, więc indeks nie został utworzony, ale powinienem móc go utworzyć bez language_override, prawda? Źle — mongo wyświetla ten sam błąd mimo że nie mam już określonego parametru language_override .

Wygląda na to, że nieudana próba utworzenia indeksu pozostawiła jakąś uszkodzoną wersję indeksu, która nie pojawia się nigdzie, więc nie mogę jej usunąć (nie pojawia się w db.users.getIndexes() i upuszczenie go po nazwie nie działa).

W końcu udało mi się naprawić indeks ustawiając language_override do wartości dosłownej 'en', w ten sposób:

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

... na co Mongo odpowiada:

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

Hurra.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Mongo powłoki Mongodb:Zwykle dozwolone jest tylko jedno użycie każdego adresu gniazda (protokół/adres sieciowy/port). dla gniazda:0.0.0.0:27017

  2. Jak opublikować dane MongoDB w zagnieżdżonej tablicy za pomocą NODE.js i Express

  3. Symfony QueryBuilder zwracający kursor MongoDB zamiast tablicy obiektów

  4. Stanowisko serwisowe węzła Mongo REST

  5. Jak rozwiązać błąd:dbpath (/data/db/) nie istnieje na stałe w MongoDB