MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Recherche plein texte MongoDB

Comme je n'ai pas trouvé beaucoup d'aide pour la recherche par caractères génériques/recherche en texte intégral à l'aide de Mongo, j'ai trouvé une solution pour répondre à mes besoins.

foreach (var doc in batch)
  {
     if (custDictionary.ContainsKey(projectId))
        {
           string concatenatedCustomFields = custFieldsList.Aggregate(string.Empty,
                            (current, custField) =>
                                current +
                                (ds.Tables[0].Columns.Contains(custField)
                                    ? (ds.Tables[0].Rows[i][custField].GetType().Name == typeof(DBNull).Name
                                        ? string.Empty
                                        : ((string) ds.Tables[0].Rows[i][custField]).StripHtml())
                                    : string.Empty));

                        doc.Add("CustomFieldsConcatenated", concatenatedCustomFields);
        }
    i++;
 }

Je lis la liste des champs personnalisés pour chaque groupe de documents, puis je crée un champ Mongo concaténé, puis j'utilise la requête Regex sur ce champ.

Ensuite pour améliorer les performances de la requête ajoutée à la suite de l'index

  _mongoConnect.Database?.GetCollection<BsonDocument>("MyCollectionName")
                .Indexes.CreateOneAsync(new BsonDocument("CustomFieldsConcatenated", "hashed"), new CreateIndexOptions { Name = "CollectionName_FieldName_Index" });