zoukankan      html  css  js  c++  java
  • python mongo

    使用pymongo库

    # coding=utf-8
    import pymongo
    import time
    from pymongo import Connection
    
    scope = 20000
    
    con = pymongo.Connection('192.168.1.1', 27017)
    db = con.test
    posts = db.post
    print "目前db中记录数:",
    print posts.count()
    con.drop_database('test')
    print "目前db中记录数:",
    print posts.count()
    print "开始计时",
    now = time.time()
    print now
    for j in range(scope):
        p = {"id": j, "tags": []}
        posts.insert(p)
    print '插入20000条空记录',
    print time.time() - now
    
    print "为一个设备增加20000条记录, 开始计时",
    now = time.time()
    print now
    post = posts.find_one({"id": 1})
    print post
    
    # 方法1 写数据库20000次,来插入这20000条记录
    # 耗时 132秒
    # for i in range(20000):
    #     updatevalue = {"package":"aaa", "time":i}
    #     posts.update({"id": post["_id"]}, {"$push":{"tags":updatevalue}})
    
    # 方法2 在本地缓存中生成list对象,达到一定长度后更新到mongodb中
    # 用时33秒
    tmplist = []
    
    for i in range(scope):
        tmplist.append({"package": "aaa", "time": i})
        if len(tmplist) > 2500:
            posts.update({"_id": post["_id"]}, {"$addToSet": {"tags": {"$each": tmplist}}})
            tmplist = []
    if len(tmplist) > 0:
        posts.update({"_id": post["_id"]}, {"$addToSet": {"tags": {"$each": tmplist}}})
    print posts.find_one({"id": 1})
    print '插入20000条记录',
    print time.time() - now
  • 相关阅读:
    Bash的提示符
    小笨霖英语笔记本(5)
    什么是VLAN
    阅读笔记:双核心Opteron处理器
    小笨霖英语笔记本(4)
    搭乘CCNUMA快车
    得到tnsnames.ora文件的位置 zz
    关于64位Windows操作系统中的注册表 zz
    Temp.Misc
    HttpHandler HttpModule入门篇
  • 原文地址:https://www.cnblogs.com/yeyong/p/4598238.html
Copyright © 2011-2022 走看看