Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb 如何创建搜索字段等于string或int的查询_Mongodb_Mongodb Query_Mongodb .net Driver - Fatal编程技术网

Mongodb 如何创建搜索字段等于string或int的查询

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?正如我在上面的评论中提到的,我建议您尝试以一种方式清理数据,即每个字段都有一个可预测的数据类型。这

我有一个mongodb集合,其中userId字段有时是int,有时是字符串。55或55

使用.NET驱动程序,我基于MongoDBLogEntry类创建查询部分:

我还尝试了一个$in子句,它最终也是两个字符串值,55,55

我想我明白为什么这些被转换成字符串。。。因为我的MongoDBLogEntry类以这种方式定义字段并将所有值转换为字符串


但是,我有没有办法用上面的代码在查询中强制输入int?

正如我在上面的评论中提到的,我建议您尝试以一种方式清理数据,即每个字段都有一个可预测的数据类型。这使它更容易处理

尽管如此,您始终可以使用基于字符串的版本:

var orFilter = builder.Or("{ \"userId\": 55 }", stringFilter);

我想我知道答案,但是。。。您能否更改数据模型,使其在任何给定字段上都具有正确键入的字符串或整数数据?我的应用程序最好不插入字符串而不是整数,但我无法立即修复遗留错误。我不想经常轮询和修复数据库。因此,为了使这项工作现在,我需要使用您建议的解决方案,这是伟大的工作。
{ "$or" : [{ "userId" : "55" }, { "userId" : "55" }] }
var orFilter = builder.Or("{ \"userId\": 55 }", stringFilter);