MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

MongoDB ред на търсене на подниз на продукт по най-голямо съвпадение

Първо, можете да комбинирате няколко филтъра с помощта на & оператор като това:

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

След това можете да използвате Regex за филтриране на продуктите, чиито имена съдържат останалите думи/всички останали думи.
ИЛИ търсене (името съдържа "памук" ИЛИ "спайдърмен")

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;

И търсене (името съдържа "памук" И "спайдърмен")

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. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Как да промените структурата на резултатите за намаляване на картата на MongoDB?

  2. Каква е разликата между changeStream и tailable курсор в MongoDB

  3. Сравняване на две полета на mongo колекция с помощта на c# драйвер в mono

  4. Обявяване на ClusterControl 1.7.1:Поддръжка за PostgreSQL 11 и MongoDB 4.0, подобрен мониторинг

  5. Има ли начин да получите парче като резултат от Find()?