MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Ricerca del testo completo di MongoDB

Dal momento che non ho trovato molto aiuto con la ricerca con caratteri jolly/ricerca di testo completo utilizzando Mongo, ho trovato una soluzione per le mie esigenze.

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

Ho letto l'elenco dei campi personalizzati per ogni gruppo di documenti, quindi creo un campo Mongo concatenato, quindi utilizzo la query Regex su quel campo.

Quindi per migliorare le prestazioni della query aggiunta seguente index

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