【问题标题】:String or integer query in mongoDB for a single fieldmongoDB中单个字段的字符串或整数查询
【发布时间】:2015-12-14 06:17:19
【问题描述】:

在 MongoDB 中,有一个名为 vehId 的字段。它包含字符串中的值以及整数中的值。喜欢

{
"vehId" : "12"
}

or

{
"vehId" : 12
}

or

{
"vehId" : ""
}

如果我将 vehId 查询为整数,则它仅返回具有整数值的 vehId,而对于字符串,它仅返回字符串。但我需要对 string 和 integer 进行一次查询。喜欢

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

我需要一个返回所有值的查询。如果我将 vehId 作为整数传递,它还会返回字符串中具有 vehId 的值,反之亦然

【问题讨论】:

  • 所以只需将整数和字符串值作为参数提供给$in
  • @BlakesSeven 我只得到一个值,它可能是字符串或整数
  • Blakes 要求运行类似 collection.find({"vehId" : { $in: [12, "12"}}) 的查询
  • 反正我知道怎么做。谢谢@BlakesSeven

标签: mongodb nosql


【解决方案1】:

因此,如果您遇到上述情况,您可以通过以下方式轻松获得结果:

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

【讨论】:

  • 我强烈不推荐这种方法,除非你确定 $vehId 总是只包含数值。例如,如果$vehId = '123abc',那么您的脚本将匹配 123 AND '123abc'!
  • 在 db 中 $vehId 始终是整数并且它会自动递增。
【解决方案2】:
collection.find({ $or: [{"vehId":value}, {"vehId": intval(value)}})

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-30
    • 2019-06-03
    • 1970-01-01
    • 2023-04-02
    相关资源
    最近更新 更多