java - 如何转换数据类型-mongoDB中的子对象级别

标签 java mongodb mongodb-query aggregation-framework mongo-shell

我有以下文件,

喜欢,

{
    "_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/

相关文章:

java - 使用 ViewPager 添加单独的 Fragment 和 Fragment Tabs

java - Mongodb 的查询选项有什么用?

javascript - mongo查询中第一个和最后一个地方的属性(property)声明?

javascript - MongoDB $和查询

Java Try-catch block ,Catch block 不会重新提示用户输入新值

java - jvm jit 公共(public)子表达式消除

regex - 使用正则表达式从 MongoDB 中提取子字符串列表

mongodb - 投影使查询变慢

mongodb - 将$ graphLookup的ObjectId与String匹配

java - 将字符串数组转换为 ArrayList