首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在MongoDB上查询时将字符串类型转换为数字类型

在MongoDB上查询时将字符串类型转换为数字类型
EN

Stack Overflow用户
提问于 2021-09-17 08:24:51
回答 1查看 52关注 0票数 1

我有一个这样的MongoDB结构。

代码语言:javascript
复制
[
  {
    _id: 1,
    data: [ 
      { price : "2", title: "title-1" }
    ]
  },
  {
    _id: 2,
    data: [ 
      { price : "2.0", title: "title-2" }
    ]
  },
  {
    _id: 3,
    data: [ 
      { price : "2.00", title: "title-3" },
      { price : "2.99", title: "title-4" }
    ]
  }

我想写一个查询,我可以在其中引入价格值等于2(Number Type)的所有标题。但问题是,价格字段的类型是字符串。当我要查询时,我必须为价格设置各种条件,比如:

代码语言:javascript
复制
db.collection("test").find({ '$or': ["'data.price": '2'}, {"data.price": '2.0'}, {"data.price": '2.00'}] })

在MongoDB中,有没有一种方法可以让我们在查询之前转换一个类型?或者有没有一种更好的方式来写上面的查询?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-17 08:36:38

理想情况下,您应该验证集合的输入参数,以便保持数据类型的一致性,尤其是将数值数据保存为数字而不是字符串。

如果您想在查询之前转换现有项,则需要结合使用$map$toDouble。在这样的转换之后,您可以运行您的查询:

代码语言:javascript
复制
db.collection.aggregate([
    {
        $project: {
            data: {
                $map: {
                    input: "$data",
                    in: {
                        $mergeObjects: [
                            "$$this",
                            { price: { $toDouble: "$$this.price" } }
                        ]
                    }
                }
            }
        }
    },
    {
        $match: { "data.price": 2 }
    }
])

Mongo Playground

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69220121

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档