2

我有以下文件,如何轉換數據類型 - 子對象層級MongoDB中

一樣,

{ 
    "_id" : ObjectId("58a5446dddadff101aea67c6"), 
    "SubMenu" : [ 
     { 
      "subMenuIconPath" : "images/hr/emp.png", 
      "screenID" : "Service Maintenance", 
      "subMenuName" : "Service Maintenance", 
      "orderBy" : 1.0, 
      "menuID" : "300" 
     }, 
     { 
      "subMenuIconPath" : "images/hr/emp.png", 
      "screenID" : "Process Template Maintenance", 
      "subMenuName" : "Process Template Maintenance", 
      "orderBy" : 2.0, 
      "menuID" : "300" 
     } 
    ], 
    "level" : "PARENT", 
    "orderBy" : 3, 
    "menuType" : "List", 
    "appID" : "dais-admin", 
    "menuName" : "Process and Service", 
    "menuID" : "300", 
}, 
{ 
    "_id" : ObjectId("58a5446dddadff101aea67c7"), 
    "SubMenu" : [ 
     { 
      "subMenuIconPath" : "images/hr/emp.png", 
      "screenID" : "User Maintenance", 
      "subMenuName" : "User Maintenance", 
      "orderBy" : 1.0, 
      "menuID" : "100" 
     }, 
     { 
      "subMenuIconPath" : "images/hr/emp.png", 
      "screenID" : "Role/ACL Maintenance", 
      "subMenuName" : "Role/ACL Maintenance", 
      "menuID" : "100" 
     }], 
    "level" : "PARENT", 
    "orderBy" : 1, 
    "menuType" : "List", 
    "appID" : "dais-admin", 
    "menuName" : "Security Settings", 
    "menuID" : "100", 
} 

執行蒙戈命令,改變SubMenu.orderBy的數組元素中轉換DOUBLE值INTEGER的。

注意:SubMenu有多個文檔。有時SubMenu.orderBy值也爲空。

有人可以幫助我做到這一點。

+0

你找蒙戈shell命令轉換? – radhakrishnan

回答

1

要轉換數據類型,程序可以在蒙戈-shell中執行命令,

通過使用更新statment中的forEach我們可以改變每一個文件。

db.collection.find({ 
     SubMenu: { 
      $exists: true 
     } 
    }).forEach(function(myDoc) { 
     var child = myDoc.SubMenu; 
     for (var i = 0; i < child.length; i++) { 
      var ob = child[i]; 
      if ('orderBy' in ob) { 
       ob.orderBy = NumberInt(ob.orderBy); 
       child[i] = ob; 
      } 

     } 
     db.collection.update({ 
      _id: myDoc._id 
     }, { 
      $set: { 
       subMenu: child 
      } 
     }); 
     printjson(myDoc); 
    }); 
1

你可以試試這個命令

db.menu.find({ 
    SubMenu: { 
     $exists: true 
    } 
}).forEach(function(obj) { 
    obj.SubMenu.forEach(function(childobject) { 
     if (childobject.orderBy != null) { 
      childobject.orderBy = NumberInt(childobject.orderBy); 
     } 
    }); 
    db.menu.save(obj); 
    printjson(obj); 
});