चूंकि मुझे मोंगो का उपयोग करके वाइल्डकार्ड खोज/पूर्ण पाठ खोज में बहुत मदद नहीं मिली है, इसलिए मैं अपनी आवश्यकता के लिए एक कामकाज लेकर आया हूं।
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++;
}
मैं दस्तावेज़ों के प्रत्येक समूह के लिए कस्टम फ़ील्ड की सूची पढ़ता हूं, फिर एक समेकित मोंगो फ़ील्ड बनाता हूं, फिर उस फ़ील्ड पर रेगेक्स क्वेरी का उपयोग करता हूं।
फिर निम्नलिखित अनुक्रमणिका जोड़ी गई क्वेरी के प्रदर्शन में सुधार करने के लिए
_mongoConnect.Database?.GetCollection<BsonDocument>("MyCollectionName")
.Indexes.CreateOneAsync(new BsonDocument("CustomFieldsConcatenated", "hashed"), new CreateIndexOptions { Name = "CollectionName_FieldName_Index" });