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

Ordine di ricerca del prodotto della sottostringa MongoDB in base alla corrispondenza più alta

Prima di tutto, puoi combinare più filtri utilizzando & operatore così:

var builder = Builders<Product>.Filter;
FilterDefinition<Product> filter = builder.Empty;
filter &= builder.Eq("Color", "blue");
filter &= builder.Eq("Retailer", "adidas");
filter &= builder.Eq("Category", "men");

Quindi, puoi utilizzare Regex per filtrare i prodotti i cui nomi contengono eventuali parole di riposo/tutte le parole di riposo.
OPPURE cerca (il nome contiene "cotone" OPPURE "uomo ragno")

var restWords = new string[] { "cotton", "spiderman" };
var orReg = new System.Text.RegularExpressions.Regex(string.Join("|", restWords));
filter &= builder.Regex("Name", BsonRegularExpression.Create(orReg));

List<Product> filteredList = products.Find(filter).ToListAsync().Result;

E cerca (il nome contiene "cotone" E "uomo ragno")

foreach (var word in restWords)
{
    filter &= builder.Regex("Name", BsonRegularExpression.Create(new System.Text.RegularExpressions.Regex(word)));
}

List<Product> filteredList = products.Find(filter).ToListAsync().Result;