Mongodb 如何创建搜索字段等于string或int的查询
我有一个mongodb集合,其中userId字段有时是int,有时是字符串。55或55 使用.NET驱动程序,我基于MongoDBLogEntry类创建查询部分: 我还尝试了一个$in子句,它最终也是两个字符串值,55,55 我想我明白为什么这些被转换成字符串。。。因为我的MongoDBLogEntry类以这种方式定义字段并将所有值转换为字符串Mongodb 如何创建搜索字段等于string或int的查询,mongodb,mongodb-query,mongodb-.net-driver,Mongodb,Mongodb Query,Mongodb .net Driver,我有一个mongodb集合,其中userId字段有时是int,有时是字符串。55或55 使用.NET驱动程序,我基于MongoDBLogEntry类创建查询部分: 我还尝试了一个$in子句,它最终也是两个字符串值,55,55 我想我明白为什么这些被转换成字符串。。。因为我的MongoDBLogEntry类以这种方式定义字段并将所有值转换为字符串 但是,我有没有办法用上面的代码在查询中强制输入int?正如我在上面的评论中提到的,我建议您尝试以一种方式清理数据,即每个字段都有一个可预测的数据类型。这
但是,我有没有办法用上面的代码在查询中强制输入int?正如我在上面的评论中提到的,我建议您尝试以一种方式清理数据,即每个字段都有一个可预测的数据类型。这使它更容易处理 尽管如此,您始终可以使用基于字符串的版本:
var orFilter = builder.Or("{ \"userId\": 55 }", stringFilter);
我想我知道答案,但是。。。您能否更改数据模型,使其在任何给定字段上都具有正确键入的字符串或整数数据?我的应用程序最好不插入字符串而不是整数,但我无法立即修复遗留错误。我不想经常轮询和修复数据库。因此,为了使这项工作现在,我需要使用您建议的解决方案,这是伟大的工作。
{ "$or" : [{ "userId" : "55" }, { "userId" : "55" }] }
var orFilter = builder.Or("{ \"userId\": 55 }", stringFilter);