我有以下文件,
喜欢,
{
"_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",
}
执行mongo命令,将SubMenu.orderBy的数组元素内转换后的DOUBLE值更改为INTEGER。
注意:子菜单有多个文档。有时 SubMenu.orderBy Value 也为 null。
有人可以帮我解决这个问题吗?
最佳答案
要转换数据类型,您可以在 Mongo-shell 中执行命令,
通过在 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);
});
关于java - 如何转换数据类型-mongoDB中的子对象级别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42809823/