sql >> Base de Datos >  >> NoSQL >> MongoDB

Búsqueda de texto completo MongoDB

Como no he encontrado mucha ayuda con la búsqueda con comodines/búsqueda de texto completo usando Mongo, he encontrado una solución para mi requerimiento.

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++;
 }

Leo la lista de campos personalizados para cada grupo de documentos, luego creo un campo Mongo concatenado y luego uso la consulta Regex en ese campo.

Luego, para mejorar el rendimiento de la consulta, se agregó el siguiente índice

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