zoukankan      html  css  js  c++  java
  • MongoDB常用命令

    一、在mongo.exe中的命令:

    mongodb4.2版本,bin目录下,双击mongo.exe,在”>”的命令提示下,我们可以输入一些命令:

    > show dbs   #查看有哪些db

    > use local   #切换到local数据库

    > show collections  #查看当前所有集合

    > show tables   #与show collections一样

    > db.startup_log.find()   #查看具体数据

    > db.createCollection(‘log’)   #创建’log’数据集

    二、导出数据,用mongoexport.exe

    在cmd中,进入到bin目录下,输入以下命令:

    注意:命令中不要尖括号,没有引号,形如:

    mongoexport -d local -c startup_log -o startup.json

    1、导出为json格式:

    mongoexport –d <数据库名称> -c <Collection名称> -o <json文件名称>

    2、导出为csv格式(可选字段,多个字段名称之间用逗号隔开):

    mongoexport –d <数据库名称> -c <Collection名称> --type=csv -f <字段名称> -o <csv文件名称>

    3、不选字段的直接导出,例:

    mongoexport -d test -c sheet -o C:UsersloriDesktop est.csv

    三、导入数据,用mongoimport.exe

    在cmd中,进入到bin目录下,输入以下命令:

    1. 导入json文件:

    mongoimport –d <数据库名称> -c <Collection名称> --file <json文件名称>

        2.导入csv文件:

    mongoimport –d <数据库名称> -c <Collection名称> --type=csv --headerline --file <csv文件名称>

    实际样例:

    mongoimport -d local -c djllog --type=csv --headerline --file startup_log.csv

    四、把collection拷贝到新建collection:

    mongodb4.2版本,bin目录下,双击mongo.exe,在”>”的命令提示下,输入:

    db.sheet.find().forEach(function(x){db.sheet2.insert(x);})  #把sheet的数据拷贝到sheet2中

    完整操作过程如下:

    > show dbs

    admin    0.000GB

    config   0.000GB

    ganji    0.013GB

    local    0.000GB

    test     0.000GB

    xiaozhu  0.000GB

    > use test

    switched to db test

    > show tables

    sheet

    > show collections

    sheet

    > db.createCollection('sheet2')   #创建'sheet2'表

    { "ok" : 1 }

    > show tables

    sheet

    sheet2

    > db.sheet.copyTo('sheet2')    # db.collection.copyTo()在mongodb4.2后已经不支持了

    2020-03-23T09:54:49.117+0800 E  QUERY    [js] uncaught exception: TypeError: db.sheet.copyTo is not a function :

    @(shell):1:1

    > db.sheet.find().forEach(function(x){db.sheet2.insert(x);})  #用这句来copy

    五、更新数据

    在pycharm中,代码操作:

    #sheet2.update({'name':'name0'},{'$set':{'age':10086}})  # 单条数据更新

    i = 1000

    for item in sheet2.find():   #多条数据更新

        i += 1

        new_age = i

        new_name = 'name'+str(i)

    sheet2.update({'_id':item['_id']},{'$set':{'age':new_age,'name':new_name}})

    六、aggregate(pipeline)

    根据需要筛选并统计数据,使用方法:

    db.collections.aggregate(pipeline)

    pipeline = [

        {$match: ?},

        {$group: ?},

        {$sort: ?},

        {$limit: ?},

        {$skip: ?},

        {$unwind: ?},

        {$redact: ?},

        {$sample: ?},

        {$out: ?}

    ]

    例子1

    pipeline = [

             #筛选出'pub_date':'2015.12.24' 且 'time':3的文件(数据记录条目)

    { '$match': { '$and': [ 'pub_date': '2015.12.24'}, {'time': 3} ] } },

    #以‘price’字段分组; {'$sum':1},每次计数1个

        { '$group': { '_id': '$price', 'count': {'$sum': 1} } },

        { '$sort': { 'counts': 1 } },  # -1 表示逆序,从大到小;1表示正序

        { '$limit': 3 }    #限制最多3个结果

    ]

    例子2

    pipeline2 = [

    {'$match':{'time':1}},    # 过滤数据,只选1天成交的商品

    #{'$match':{'time':{'$in':[1,2,3,4,5]}}},   # 过滤数据,选出5天内成交的商品 

        {'$group':{'_id':{'$slice':['$area',0,1]},'counts':{'$sum':1}}},  #整个这句是分组;'$slice'是将某字段分片,['$area',0,1]将area字段分片,跳过第0片,取1片,即取第一片;{'$sum':1},每次计数1个

        {'$sort':{'counts':-1}}

    ]

    例子3

    pipeline3 = [

        {'$match':{'$and':[{'pub_date':{'$gte':'2015.12.25','$lte':'2015.12.27'}},{'area':{'$all':['朝阳']}}]}},    # 日期在2015.12.25到2015.12.27之间的,area字段有朝阳的

        {'$group':{'_id':{'$slice':['$cates',2,1]},'counts':{'$sum':1}}},  # cates字段分片,取第3片

        {'$limit':3}   #限制只出3个结果

    ]

    例子4

    pipeline4 = [

        {'$match':{'$and':[{'pub_date':{'$gte':'2015.12.25','$lte':'2015.12.27'}},

                           {'cates':{'$all':['北京二手手机']}}, #分类中有'北京二手手机'的

                           {'look':{'$nin':['-']}}  #look字段不为'-'的数据,look是几成新

                          ]}},

        {'$group':{'_id':'$look','avg_price':{'$avg':'$price'}}},  #以look字段分组(按成色分组),计算price的平均值

        {'$sort':{'avg_price':-1}}

    ]

    例子5

    pipeline = [

        #整个这句是分组;'$slice'是将某字段分片,['$area',0,1]将area字段分片,跳过第0片,取1片,即取第一片;{'$sum':1},每次计数1个

        {'$group':{'_id':{'$slice':['$area',0,1]},'counts':{'$sum':1}}},  

        {'$sort' :{'counts':-1}},  #按降序排列

        {'$limit':30}   #限制最多30个结果

    ]

    for item in goods_info.aggregate(pipeline):

        print(item)

  • 相关阅读:
    C++ 使用STL string 实现的split,trim,replace
    C++ int 转 string (使用stringstream)
    php加速器之 eAccelerator 安装方法
    C++ vector容器类型
    C/C++获取当前系统时间
    ABAP开发基础知识:2) 变量的声明(Declaring Variables)
    网页开发中常用到的Firefox附加组件
    SAP系统介绍
    ABAP开发基础知识:1) ABAP基础程序类型(ABAP Elementary Data Types)
    ABAP开发基础知识:4) 结构体(Structure)
  • 原文地址:https://www.cnblogs.com/djlbolgs/p/12532023.html
Copyright © 2011-2022 走看看