MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Ordem de pesquisa de produtos de substring do MongoDB por correspondência mais alta


Em primeiro lugar, você pode combinar vários filtros usando & operador assim:
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");

Em seguida, você pode usar Regex para filtrar os produtos cujos nomes contêm quaisquer palavras de descanso/todas as palavras de descanso.
OU search (o nome contém "algodão" OU "homem-aranha")
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 search (o nome contém "algodão" E "homem-aranha")
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;