【问题标题】:Search Substring on a Integer Value在整数值上搜索子字符串
【发布时间】:2012-09-07 14:53:38
【问题描述】:

假设我们有一个 mongodb 集合,其中的元素包含一个 int 属性值,例如:{"MyCollectionAttribute": 12345}

如何使用 Query<T>. 语法在 int 中搜索字符串“234”?

现在它似乎可以使用原始查询(如here 解释):

var query = new QueryDocument("$where", "/234/.test(this.MyCollectionAttribute)");
myCollection.Find(query);

是否最好将值直接存储为字符串而不是整数,因为正则表达式匹配会很慢?您如何处理这些情况?

编辑

上下文:公司可以有一些内部代码是数字。在 sql server 中,它们可以存储为 int 类型的列,以便在数据库级别具有数据完整性,然后使用以下内容从 linq 查询到 sql:

.where(item => item.CompanyCode.ToString().Contains("234"))

通过这种方式,数据库级别的数据完整性和查询的类型安全。

我问这个问题是为了看看如何使用 mongodb 来实现这个场景。

【问题讨论】:

  • 一切都取决于您的要求。如果您要经常进行此类查询,那么添加该字段的字符串版本可能是有意义的,但如果您只是偶尔这样做,那将是矫枉过正。

标签: c# mongodb 10gen-csharp-driver


【解决方案1】:

你问什么没有多大意义。

正则表达式用于在 strings 内而不是在 integers 内搜索。

如果您想执行子字符串搜索(无论出于何种原因),请存储您的号码 作为字符串而不是整数 - 显然。

【讨论】:

  • 我编辑了问题并解释了上下文。将数字保存为字符串是一种选择,但它会失去数据完整性。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-07-04
  • 2015-01-24
  • 2016-10-30
  • 2019-10-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多