Как создать текстовый индекс в mongodb с помощью golang и mongo-go-driver? - PullRequest
0 голосов
/ 25 июня 2019

Я пытаюсь выполнить полнотекстовый поиск по коллекции, но для этого мне нужно создать текстовый индекс. Как создать текстовый указатель на два поля?

Я знаю, что должен использовать вещь как это:

opts := options.CreateIndexes().SetMaxTime(10 * time.Second)

idxFiles := []mongo.IndexModel{
    {
      Keys: bsonx.Doc{{"name": "text"}},
    },
  }

db.Collection("mycollection").Indexes().CreateMany(context, idx, opts)

Ответы [ 2 ]

0 голосов
/ 26 июня 2019

Я нашел решение:

    coll := db.Collection("test")
    index := []mongo.IndexModel{
        {
            Keys: bsonx.Doc{{Key: "name", Value: bsonx.String("text")}},
        },
        {
            Keys: bsonx.Doc{{Key: "createdAt", Value: bsonx.Int32(-1)}},
        },
    }

    opts := options.CreateIndexes().SetMaxTime(10 * time.Second)
    _, errIndex = coll.Indexes().CreateMany(context, index, opts)
    if err != nil {
        panic(errIndex)
    }
0 голосов
/ 25 июня 2019

Для создания индексов с использованием официального драйвера mongo go вы можете использовать следующий код:

// create Index
indexName, err := c.Indexes().CreateOne(
        context.Background(),
        mongo.IndexModel{
                Keys: bson.M{
                        "time": 1,
                },
                Options: options.Index().SetUnique(true),
        },
)
if err != nil {
        log.Fatal(err)
}
fmt.Println(indexName)

Вы можете заменить его на желаемую конфигурацию индекса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...