MongoDB中针对单个字段的字符串或整数查询

10
在MongoDB中,有一个名为vehId的字段。它既包含字符串值,也包含整数值。例如:

在MongoDB中,有一个名为vehId的字段。它既包含字符串值,也包含整数值。例如:

{
"vehId" : "12"
}

or

{
"vehId" : 12
}

or

{
"vehId" : ""
}

如果我将vehId查询作为整数,它仅返回具有整数值的vehId,对于字符串,它仅返回字符串。但我需要一个适用于字符串和整数的单个查询。就像:

collection.find({"vehId" : <value> })

我需要一个查询语句,可以返回所有的值。如果我传递的vehId是整数,它也会返回vehId为字符串的值,反之亦然。


1
只需将整数和字符串值作为参数提供给 $in - Blakes Seven
@BlakesSeven 我只得到一个值,可能是字符串或整数。 - Ashutosh
4
Blakes正在请求运行查询,例如collection.find({"vehId":{$in:[12,“12”]}}). - Sarath Nair
无论如何,我已经想到了如何做。谢谢@BlakesSeven。 - Ashutosh
2个回答

4

如果您遇到类似上述情况,您可以轻松获取以下结果:

collection.find({"vehId" : { $in: [intval($vehId), $vehId}})

2
我强烈不建议这种方法,除非你确定$vehId始终只包含数字值。例如,如果$vehId ='123abc',那么你的脚本将匹配123和'123abc'! - evilReiko
在数据库中,$vehId始终为整数并自动递增。 - Ashutosh

0
collection.find({ $or: [{"vehId":value}, {"vehId": intval(value)}})

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接