javascript 编程、操作、清洗 mongodb数据

1. 书写javascript脚本

连接数据库脚本,connect.js,内容:

function getConnection() {
    username = "root";
    password = "密码";
    this.getDB = function (dbname) {
        conn = new Mongo("localhost:27017");
        db = conn.getDB(dbname);
        db.auth(username,password);
        return db;
    }
}

 清洗数据脚本,fileStorageDeal.js,内容:

load("/mongoDataDealJs/js/base/connect.js");
conn = new getConnection();
db = conn.getDB("admin");
db = conn.getDB("数据库名称");
var cursor = db.getCollection('file_storage').find({});
while (cursor.hasNext()) {
    r = cursor.next();
    printjson(r); // 打印
    db.getCollection('file_record').insert({"username" : r.username,
        "status" : r.status,
        "createdDate" : r.createdDate,
        "lastModifiedDate" : r.lastModifiedDate,
        "_class" : r._class})
}

2. 进入mongodb安装目录bin;

3. 执行命令:mongo /mongoDataDealJs/js/fileStorageDeal/fileStorageDeal.js

实际开发案例

## 使用说明

### 从数据库中导出应用表的csv文件t_app_config.csv
### 使用命令导入csv文件
mongoimport --authenticationDatabase=admin -u useranme -p password -d 数据库名 --type csv --headerline --file /home/t_app_config.csv
### 拷贝abaseToMongo.js到mongo服务器/home目录下
+ 修改数据库连接用户名和密码
+ 进入mongo安装目录bin
+ 执行命令:mongo /home/abaseToMongo.js

function getConnection() {
    username = "root";
    password = "password";
    this.getDB = function (dbname) {
        conn = new Mongo("localhost:27017");
        db = conn.getDB(dbname);
        db.auth(username, password);
        return db;
    }
}

conn = new getConnection();
db = conn.getDB("admin");
db = conn.getDB("ecode_menhu");
var statusEnable = "ENABLED";
var statusDisabled = "DISABLED";
// 更新或新增应用
var cursor = db.getCollection('t_app_config').find({});
print("==========mdm_app count:" + db.getCollection('mdm_app').find({}).count())
print("==========mdm_app_entry count:" + db.getCollection('mdm_app_entry').find({}).count())
print("==========mdm_app_pc count:" + db.getCollection('mdm_app_pc').find({}).count())
print("==========mdm_thirdparty_app_setting count:" + db.getCollection('mdm_thirdparty_app_setting').find({}).count())
while (cursor.hasNext()) {
    var r = cursor.next();
    // 是否存在,存在修改,不存在新增

    var terminal = r.n_terminal;
    var appStatus = statusEnable;
    if (r.n_valid != 1) {
        appStatus = statusDisabled;
    }
    if (terminal.indexOf("2") != -1 || terminal.indexOf("3") != -1) {
        // 应用表mdm_app
        var oldAppCount = db.getCollection('mdm_app').find({_id: r.c_id}).count();
        if (oldAppCount > 0) {
            // 修改应用
            db.getCollection('mdm_app').update({
                    _id: r.c_id
                }, {
                    $set: {
                        _id: r.c_id,
                        name: r.c_name,
                        belong: "online_h5",
                        description: r.c_summary,
                        icon96: r.c_icon,
                        sortNo: r.n_order,
                        status: appStatus,
                        createdDate: new Date(r.dt_cjsj),
                        lastModifiedDate: new Date(r.dt_zhgxsj),
                        _class: "cn.fingersoft.module.core.bean.doc.App"
                    }
                },
                {
                    multi: true
                });
        } else {
            // 新增应用
            db.getCollection('mdm_app').insert({
                _id: r.c_id,
                name: r.c_name,
                belong: "online_h5",
                description: r.c_summary,
                icon96: r.c_icon,
                sortNo: r.n_order,
                status: appStatus,
                createdDate: new Date(r.dt_cjsj),
                lastModifiedDate: new Date(r.dt_zhgxsj),
                _class: "cn.fingersoft.module.core.bean.doc.App"
            });
        }

        // 应用入口表mdm_app_entry
        if (r.n_valid == 1) {
            // 查询应用
            var entryAppCursor = db.getCollection('mdm_app').find({_id: r.c_id});
            var entryApp = null;
            while (entryAppCursor.hasNext()) {
                entryApp = entryAppCursor.next();
            }
            if (null != entryApp) {
                var oldAppEntryCount = db.getCollection('mdm_app_entry').find({_id: r.c_id}).count();
                if (oldAppEntryCount > 0) {
                    // 修改应用入口
                    db.getCollection('mdm_app_entry').update({
                            _id: r.c_id
                        }, {
                            $set: {
                                _id: r.c_id,
                                app: {
                                    "$ref" : "mdm_app",
                                    "$id" : entryApp._id
                                },
                                name: r.c_name,
                                remark: r.c_summary,
                                ico: r.c_icon,
                                href: r.c_mobile_url,
                                appId: r.c_appkey,
                                appSecret: r.c_secret,
                                createdDate: new Date(r.dt_cjsj),
                                lastModifiedDate: new Date(r.dt_zhgxsj),
                                _class: "cn.fingersoft.module.core.bean.doc.AppEntry"
                            }
                        },
                        {
                            multi: true
                        });
                } else {
                    // 新增应用入口
                    db.getCollection('mdm_app_entry').insert({
                        _id: r.c_id,
                        app: {
                            "$ref" : "mdm_app",
                            "$id" : entryApp._id
                        },
                        name: r.c_name,
                        remark: r.c_summary,
                        ico: r.c_icon,
                        href: r.c_mobile_url,
                        appId: r.c_appkey,
                        appSecret: r.c_secret,
                        createdDate: new Date(r.dt_cjsj),
                        lastModifiedDate: new Date(r.dt_zhgxsj),
                        _class: "cn.fingersoft.module.core.bean.doc.AppEntry"
                    });
                }
            }
        }
    }
    if (terminal.indexOf("1") != -1) {
        // pc应用表mdm_app_pc
        var oldAppEntryCount = db.getCollection('mdm_app_pc').find({_id: r.c_id}).count();
        var pcStatus = statusEnable;
        if (r.n_valid != 1) {
            pcStatus = statusDisabled;
        }
        if (oldAppEntryCount > 0) {
            // 修改pc应用
            db.getCollection('mdm_app_pc').update({
                    _id: r.c_id
                }, {
                    $set: {
                        _id: r.c_id,
                        name: r.c_name,
                        remark: r.c_summary,
                        icon: r.c_icon,
                        href: r.c_pc_url,
                        appId: r.c_appkey,
                        appSecret: r.c_secret,
                        status: pcStatus,
                        createdDate: new Date(r.dt_cjsj),
                        lastModifiedDate: new Date(r.dt_zhgxsj),
                        _class: "cn.fingersoft.module.core.bean.doc.AppPC"
                    }
                },
                {
                    multi: true
                });
        } else {
            // 新增pc应用
            db.getCollection('mdm_app_pc').insert({
                _id: r.c_id,
                name: r.c_name,
                remark: r.c_summary,
                icon: r.c_icon,
                href: r.c_pc_url,
                appId: r.c_appkey,
                appSecret: r.c_secret,
                status: pcStatus,
                createdDate: new Date(r.dt_cjsj),
                lastModifiedDate: new Date(r.dt_zhgxsj),
                _class: "cn.fingersoft.module.core.bean.doc.AppPC"
            });
        }
    }
    // 第三方应用设置表mdm_thirdparty_app_setting
    var oldThirdSettingCount = db.getCollection('mdm_thirdparty_app_setting').find({_id: r.c_id}).count();
    if (r.n_valid == 1) {
        if (oldThirdSettingCount > 0) {
            // 修改三方应用配置
            db.getCollection('mdm_thirdparty_app_setting').update({
                    _id: r.c_id
                }, {
                    $set: {
                        _id: r.c_id,
                        name: r.c_name,
                        description: r.c_summary,
                        appid: r.c_appkey,
                        secret: r.c_secret,
                        expireTime: 0,
                        createdDate: new Date(r.dt_cjsj),
                        lastModifiedDate: new Date(r.dt_zhgxsj),
                        _class: "cn.fingersoft.module.core.bean.doc.ThirdPartyAppSetting"
                    }
                },
                {
                    multi: true
                });
        } else {
            // 新增三方应用配置
            db.getCollection('mdm_thirdparty_app_setting').insert({
                _id: r.c_id,
                name: r.c_name,
                description: r.c_summary,
                appid: r.c_appkey,
                secret: r.c_secret,
                expireTime: 0,
                createdDate: new Date(r.dt_cjsj),
                lastModifiedDate: new Date(r.dt_zhgxsj),
                _class: "cn.fingersoft.module.core.bean.doc.ThirdPartyAppSetting"
            });
        }
    }

}
print("==========mdm_app count:" + db.getCollection('mdm_app').find({}).count())
print("==========mdm_app_entry count:" + db.getCollection('mdm_app_entry').find({}).count())
print("==========mdm_app_pc count:" + db.getCollection('mdm_app_pc').find({}).count())
print("==========mdm_thirdparty_app_setting count:" + db.getCollection('mdm_thirdparty_app_setting').find({}).count())

实际开发案例二:

var cursor = db.getCollection('core_app_path').find({},{name:1,href:1})
while (cursor.hasNext()) {
    r = cursor.next();
    printjson(r); // 打印
    db.getCollection('core_app_path_hj').insert({"route" : "<route name=\""+ r.name+"\" address=\""+r.href+"\">"})
}

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
共享单车数据分析开发环境包括以下方面: 1. 数据采集:共享单车数据的采集可以通过API接口、爬虫等方式进行。需要具备Python、Java、JavaScript编程语言的基础知识,以及熟悉常用的Web框架和爬虫库,如Scrapy、BeautifulSoup等。 2. 数据存储:共享单车数据量大,需要在存储方面进行考虑。常用的数据存储技术包括关系型数据库(如MySQL、PostgreSQL)和NoSQL数据库(如MongoDB、Cassandra)。可以使用ORM框架(如Django ORM、SQLAlchemy)来简化与数据库的交互。 3. 数据处理:数据处理可以使用Python的Pandas、Numpy等数据处理库,或者大数据处理框架(如Hadoop、Spark)进行。需要掌握数据清洗数据转换、数据聚合等技术。 4. 数据可视化:数据可视化可以使用常用的数据可视化工具,如Tableau、Power BI、Python的Matplotlib和Seaborn等。需要掌握设计可视化图表的技巧,同时也需要了解前端技术(如HTML、CSS、JavaScript)。 5. 机器学习与数据挖掘:机器学习与数据挖掘可以使用Python的Scikit-learn、TensorFlow等库进行。需要掌握数据预处理、特征工程、模型训练和评估等技术。 6. GIS技术:GIS技术可以将共享单车数据与地理信息结合起来进行分析和可视化。需要掌握GIS相关的知识和技术。 总之,共享单车数据分析开发环境需要掌握多种技术和工具,以便进行数据采集、存储、处理、可视化和分析。同时,需要了解数据分析的基本原理和方法,以便提取有价值的信息和洞察。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值