sql >> Databasteknik >  >> NoSQL >> MongoDB

MongoDB understräng produktsökning efter högsta matchning

Först och främst kan du kombinera flera filter med att använda & operatör så här:

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");

Sedan kan du använda Regex för att filtrera produkterna vars namn innehåller alla viloord/alla restord.
ELLER sök (namnet innehåller "bomull" ELLER "spiderman")

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;

OCH sök (namnet innehåller "bomull" OCH "spiderman")

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;



  1. NodeJS callback efter flera async-funktioner i for-loop

  2. MongoDB + Node.js:kan inte infoga datum korrekt

  3. Fulltextsökning med Meteor.js och MongoDB

  4. MongoDB. Ange ett unikt nummer för varje dokument i samlingen