MongoDB - 如何更改嵌套在子文档中的数组中找到的字符串的类型

时间:2013-06-08 18:37:32

标签: mongodb

我正在尝试将类型字符串更改为Integer。以下代码在简单搜索时选择正确的元素,并且代码完美地适用于顶部的字符串元素。

db.providers.find({'assignments.assignment' : 
    {$elemMatch :
        {
            as_total_hours : 
                {$exists : true}}}}).forEach( function(obj) { 
                    obj.as_total_hours = parseInt(obj.as_total_hours); 
                    db.providers.save(obj); 
                })

以下是该文件的一个示例。

"dev_active_interviews" : 0,
"assignments" : {
    "assignment" : [ 
        {
            "as_rate" : "$3.89",
            "as_from" : "05/2011",
            "as_to"   : "Present",
            "as_total_hours " : "16"
        },
        {
            "as_rate" : "$2.22",
            "as_from" : "11/2010",
            "as_to"   : "Past",
            "as_total_hours" : "200"
        }
     ]
  }

1 个答案:

答案 0 :(得分:3)

您的代码假设find返回嵌入的赋值对象而不是对象。

更改:

obj.as_total_hours = parseInt(obj.as_total_hours);
db.providers.save(obj); 

obj.assignments.assignment.forEach(function(obj) {
    obj.as_total_hours = parseInt(obj.as_total_hours);
})
db.providers.save(obj); 

您还可以将{$exists:true}更改为{$type: 2}(或合并它们),以便查询只查找字符串。