public async Task <List <DailyEntry> > GetBySearchAndUserAsync(string token, string search)
    {
        var filter        = Builders <DailyEntry> .Filter;
        var searchOptions = new MongoDB.Driver.TextSearchOptions();

        searchOptions.CaseSensitive = false;
        var searchFilter = filter.Text($"{search}", searchOptions);
        var tokenFilter  = filter.Eq(entry => entry.Token, token);
        var finalFilter  = filter.And(tokenFilter, searchFilter);

        return(await _dailyEntries.Find <DailyEntry>(finalFilter).ToListAsync());
    }
 public void TestTextWithOptionsQueryGeneration()
 {
     var options = new TextSearchOptions
     {
         Language = "norwegian",
         CaseSensitive = true,
         DiacriticSensitive = true
     };
     var query = Query.Text("foo", options);
     var expected = "{ \"$text\" : { \"$search\" : \"foo\", \"$language\" : \"norwegian\", \"$caseSensitive\" : true, \"$diacriticSensitive\" : true } }";
     Assert.AreEqual(expected, query.ToJson());
 }
Example #3
0
 /// <summary>
 ///     全文检索
 /// </summary>
 /// <param name="key"></param>
 /// <param name="caseSensitive"></param>
 /// <param name="diacriticSensitive"></param>
 /// <param name="limit"></param>
 /// <param name="language"></param>
 /// <returns></returns>
 public static List<BsonDocument> SearchText(string key, bool caseSensitive, bool diacriticSensitive, int limit,
     string language = "")
 {
     //检索文法:
     //[Before2.6]http://docs.mongodb.org/manual/reference/command/text/#text-search-languages
     //[After 2.6]http://docs.mongodb.org/manual/reference/operator/query/text/#op._S_text
     //[From  3.2]https://docs.mongodb.org/master/reference/operator/query/text/
     //{
     //  $text:
     //    {
     //      $search: < string >,
     //      $language: < string >,
     //      $caseSensitive: < boolean >,
     //      $diacriticSensitive: < boolean >
     //    }
     //}
     //检索关键字
     var textSearchOption = new TextSearchOptions();
     textSearchOption.CaseSensitive = caseSensitive;
     textSearchOption.DiacriticSensitive = diacriticSensitive;
     //语言
     if (string.IsNullOrEmpty(language))
     {
         textSearchOption.Language = language;
     }
     var textSearchQuery = Query.Text(key, textSearchOption);
     var result = RuntimeMongoDbContext.GetCurrentCollection().FindAs<BsonDocument>(textSearchQuery);
     var resultDocumentList = result.SetLimit(limit).ToList();
     return resultDocumentList;
 }