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

indeks mangusty już istnieje z różnymi opcjami

sprawdź, w którym polu masz zdefiniowany indeks tekstowy. Obecnie mongodb pozwala tylko na jeden indeks tekstowy na kolekcję. więc jeśli zdefiniowałeś indeks tekstowy w kolumnie desc i spróbujesz użyć tego indeksu w innej kolumnie, na pewno otrzymasz ten błąd.

czy możesz spróbować wysłać zapytanie do indeksu i zobaczyć, w której kolumnie go utworzyłeś. Aby uzyskać indeksy, możesz zrobić

db.collection.getIndexes()

i zwróci coś takiego

[
    {
        "v" : 1,
        "key" : {
            "_id" : 1
        },
        "name" : "_id_",
        "ns" : "some.ns"
    },
    {
        "v" : 1,
        "key" : {
            "_fts" : "text",
            "_ftsx" : 1
        },
        "name" : "desc_text",
        "ns" : "some.ns",
        "weights" : {
            "title" : 1
        },
        "default_language" : "english",
        "language_override" : "language",
        "textIndexVersion" : 2
    }
]

teraz jeśli chcesz objąć zakresem również inne kolumny, aby użyć tego indeksu, po prostu upuść ten indeks

db.collection.dropIndex('desc_text');

a następnie utwórz go ponownie, włączając wszystkie kolumny, które mają być objęte indeksem tekstowym,

db.collection.createIndex({
    title:'text;,
    body: 'text;,
    desc: 'text',
    ...... and so on
});



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Jak uzyskać dane ReferenceField w mongoengine?

  2. Agregacja MongoDB z $sample bardzo powolną

  3. Porównanie dwóch pól kolekcji mongo za pomocą sterownika c# w mono

  4. Pozycyjna $ pracująca na różnych częściach tego samego dokumentu?

  5. Integracja Node.js i Backbone.js