如何在MongoDB C#查询中处理数据?

时间:2019-02-12 23:50:45

标签: c# mongodb nosql

我的CITY集合为{id,name},我需要在用户输入的搜索中找到正确的城市。我已经在C#中创建了一个方法,用于清理键入的字符串以进行搜索:

用户键入了:Órlândõcítý 在蒙哥:奥兰多城

该方法将在ORLANDOCITY中进行清理和转换,但我还需要在ORLANDOCITY字符串中转换存储的城市才能找到。

我尝试过:

var stringCleaned = CleanToSearch(value);
_mongoCollection.Find(c => StringUtils.CleanToSearch(c.Name).Contains(stringCleaned)).ToList();

但是我收到了不受支持的过滤器错误。我该怎么做?

1 个答案:

答案 0 :(得分:0)

我不确定100%确定CleanToSearch和StringUtils.CleanToSearch有什么区别?我可以看到它们稍后返回一个集合,但是最后一个方法(StringUtils.CleanToSearch)的目的是什么。我认为CleanToSearch的目的是以存储在数据库中的城市名称结尾。无论如何,我不会成为“为什么要这样做”之一。 您在City类中始终可以拥有一个包含StringUtils.CleanToSearch(城市名称)的结果的属性。因此,当您创建一个新城市时,请运行该方法并填充属性(CleanedNames)。

  BestInPlaceEditor.prototype.placeButtons = function (output, field){
    'use strict'
    // the ok button isn't changed
    if (field.okButton) {
      output.append(
        jQuery('<button>').html(field.okButton).attr({
          type: 'submit',
          class: field.okButtonClass
        })
      )
    }

    if (field.cancelButton) {
      // create new cancel "<button>"
      var $resetBtn = jQuery('<button>').html(field.cancelButton).attr({
        type: 'reset',
        class: field.cancelButtonClass
      }),
      // and traditional cancel '<input type="button">', but this should be hidden
      $_resetBtn = jQuery('<input>').val(field.cancelButton).css({ display: 'none' })
      .attr({
        type: 'button',
        class: '__real-btn-close-best_in_place'
      });
      // and bind event to 'trigger' click traditional button when the new <button> is clicked 
      $resetBtn.bind('click', function (event) {
        $(event.currentTarget).parents('form.form_in_place').find('input.__real-btn-close-best_in_place').trigger('click');
        event.stopPropagation(); // << also neccessary
      });
      // append both
      output.append($_resetBtn).append($resetBtn);
    }
  }
}

您的搜索将是:

public class City
{
    public City(string name)
    {
      Name = name;
      CleanedNames = StringUtils.CleanToSearch(name);
    }

    string Name {get; set;}
    string[] CleanedNames {get; set;}
}