精华内容
参与话题
问答
  • MongoDB脚本

    2019-06-26 17:12:58
    1.插入数据 ... title: 'MongoDB 教程', description: 'MongoDB 是一个 Nosql 数据库', by: '菜鸟教程', url: 'http://www.runoob.com', tags: ['mongodb', 'database', 'NoSQL'], likes: 100 ...

    1.插入数据
    db.col.insert({
        title: 'MongoDB 教程', 
        description: 'MongoDB 是一个 Nosql 数据库',
        by: '菜鸟教程',
        url: 'http://www.runoob.com',
        tags: ['mongodb', 'database', 'NoSQL'],
        likes: 100
    })
    insertMany   批量插入 


    2.更新数据
    db.collection.update(
       <query>,
       <update>,
       {
         upsert: <boolean>,
         multi: <boolean>,
         writeConcern: <document>
       }
    )


    query : update的查询条件,类似sql update查询内where后面的。
    update : update的对象和一些更新的操作符(如$,$inc...)等,也可以理解为sql update查询内set后面的
    upsert : 可选,这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。
    multi : 可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。
    writeConcern :可选,抛出异常的级别。


    3.替换文档
    db.collection.save(
       <document>,
       {
         writeConcern: <document>
       }
    )

    4.删除数据
    db.collection.remove(
       <query>,
       {
         justOne: <boolean>,
         writeConcern: <document>
       }
    )
    db.col.remove({})  删除所有
    db.col.remove({'title':'MongoDB 教程'}) 删除部分

    query :(可选)删除的文档的条件。
    justOne : (可选)如果设为 true 或 1,则只删除一个文档,如果不设置该参数,或使用默认值 false,则删除所有匹配条件的文档。
    writeConcern :(可选)抛出异常的级别。

    5.查询
    db.collection.find(query, projection)
    query :可选,使用查询操作符指定查询条件
    projection :可选,使用投影操作符指定返回的键。查询时返回文档中所有键值, 只需省略该参数即可(默认省略)。

    db.col.find().pretty()
    pretty() 方法以格式化的方式来显示所有文档。

    等于            {<key>:<value>}            db.col.find({"by":"菜鸟教程"}).pretty()        where by = '菜鸟教程'
    小于            {<key>:{$lt:<value>}}    db.col.find({"likes":{$lt:50}}).pretty()    where likes < 50
    小于或等于        {<key>:{$lte:<value>}}    db.col.find({"likes":{$lte:50}}).pretty()    where likes <= 50
    大于            {<key>:{$gt:<value>}}    db.col.find({"likes":{$gt:50}}).pretty()    where likes > 50
    大于或等于        {<key>:{$gte:<value>}}    db.col.find({"likes":{$gte:50}}).pretty()    where likes >= 50
    不等于            {<key>:{$ne:<value>}}    db.col.find({"likes":{$ne:50}}).pretty()    where likes != 50

    多个条件
    db.col.find({key1:value1, key2:value2}).pretty()

    and和like
    db.col.find({"likes": {$gt:50}, $or: [{"by": "123"},{"title": "MongoDB"}]}).pretty()

    limit
    db.COLLECTION_NAME.find().limit(NUMBER)


    skip(NUMBER) 跳过某个数据
    db.COLLECTION_NAME.find().limit(NUMBER).skip(NUMBER)

    sort()方法  -1 是用于降序排列
    db.COLLECTION_NAME.find().sort({KEY:1})


    6.索引:
    Key 值为你要创建的索引字段,1 为指定按升序创建索引,创建索引指定为 -1 
    db.collection.createIndex(keys, options)

    Parameter            Type            Description
    background            Boolean            建索引过程会阻塞其它数据库操作,background可指定以后台方式创建索引,即增加 "background" 可选参数。 "background" 默认值为false。
    unique                Boolean            建立的索引是否唯一。指定为true创建唯一索引。默认值为false.
    name                string            索引的名称。如果未指定,MongoDB的通过连接索引的字段名和排序顺序生成一个索引名称。
    dropDups            Boolean            3.0+版本已废弃。在建立唯一索引时是否删除重复记录,指定 true 创建唯一索引。默认值为 false.
    sparse                Boolean            对文档中不存在的字段数据不启用索引;这个参数需要特别注意,如果设置为true的话,在索引字段中不会查询出不包含对应字段的文档.。默认值为 false.
    expireAfterSeconds    integer            指定一个以秒为单位的数值,完成 TTL设定,设定集合的生存时间。
    v                    index version    索引的版本号。默认的索引版本取决于mongod创建索引时运行的版本。
    weights                document        索引权重值,数值在 1 到 99,999 之间,表示该索引相对于其他索引字段的得分权重。
    default_language    string            对于文本索引,该参数决定了停用词及词干和词器的规则的列表。 默认为英语
    language_override    string            对于文本索引,该参数指定了包含在文档中的字段名,语言覆盖默认的language,默认值为 language.


    db.col.getIndexes()                查看集合索引
    db.col.totalIndexSize()         查看集合索引大小
    db.col.dropIndexes()            删除集合所有索引
    db.col.dropIndex("索引名称")     删除集合指定索引

    MongoDB中聚合的方法使用aggregate()

    db.COLLECTION_NAME.aggregate(AGGREGATE_OPERATION)
    db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$sum : 1}}}])   对by_user分组聚合,count()

    表达式        描述                                                实例
    $sum        计算总和。                                            db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$sum : "$likes"}}}])
    $avg        计算平均值                                            db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$avg : "$likes"}}}])
    $min        获取集合中所有文档对应值得最小值。                db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$min : "$likes"}}}])
    $max        获取集合中所有文档对应值得最大值。                db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$max : "$likes"}}}])
    $push        在结果文档中插入值到一个数组中。                    db.mycol.aggregate([{$group : {_id : "$by_user", url : {$push: "$url"}}}])
    $addToSet    在结果文档中插入值到一个数组中,但不创建副本。    db.mycol.aggregate([{$group : {_id : "$by_user", url : {$addToSet : "$url"}}}])
    $first        根据资源文档的排序获取第一个文档数据。            db.mycol.aggregate([{$group : {_id : "$by_user", first_url : {$first : "$url"}}}])
    $last        根据资源文档的排序获取最后一个文档数据            db.mycol.aggregate([{$group : {_id : "$by_user", last_url : {$last : "$url"}}}])

    $project:    修改输入文档的结构。可以用来重命名、增加或删除域,也可以用于创建计算结果以及嵌套文档。
    $match:    用于过滤数据,只输出符合条件的文档。$match使用MongoDB的标准查询操作。
    $limit:    用来限制MongoDB聚合管道返回的文档数。
    $skip:        在聚合管道中跳过指定数量的文档,并返回余下的文档。
    $unwind:    将文档中的某一个数组类型字段拆分成多条,每条包含数组中的一个值。
    $group:    将集合中的文档分组,可用于统计结果。
    $sort:        将输入文档排序后输出。
    $geoNear:    输出接近某一地理位置的有序文档。

    db.article.aggregate(
        { $project : {
            title : 1 ,
            author : 1 ,
        }}
     );


    db.article.aggregate(
        { $project : {
            _id : 0 ,
            title : 1 ,
            author : 1
    }});

    match用于获取分数大于70小于或等于90记录,然后将符合条件的记录送到下一阶段$group管道操作符进行处理。
    db.articles.aggregate( [
        { $match : { score : { $gt : 70, $lte : 90 } } },
        { $group: { _id: null, count: { $sum: 1 } } }
    ] );

    经过$skip管道操作符处理后,前五个文档被"过滤"掉
    db.article.aggregate(
    { $skip : 5 });

    { $set : { field : value } }                用来指定一个键并更新键值,若键不存在并创建。
                
    { $unset : { field : 1} }                    用来删除一个键
                
    { $inc : { field : value } }                 $inc可以对文档的某个值为数字型(只能为满足要求的数字)的键进行增减的操作。
                
    { $push : { field : value } }                把value追加到field里面去,field一定要是数组类型才行,如果field不存在,会新增一个数组类型加进去。

    { $pushAll : { field : value_array } }        同$push,只是一次可以追加多个值到一个数组字段内。

    { $pull : { field : _value } }                从数组field内删除一个等于value值

    $addToSet                                    增加一个值到数组内,而且只有当这个值不在数组内才增加。

    { $pop : { field : 1 } }                    删除数组的第一个或最后一个元素

    { $rename : { old_field_name : new_field_name } }    修改字段名称

    {$bit : { field : {and : 5}}}                位操作,integer类型


    //match用于获取分数大于70小于或等于90记录,然后将符合条件的记录送到下一阶段$group管道操作符进行处理。
    db.articles.aggregate( [
        { $match : { score : { $gt : 70, $lte : 90 } } },
        { $group: { _id: null, count: { $sum: 1 } } }
    ] );


    索引数组字段:对数据中每个数据都要做索引操作

    索引子文档字段:对文档下字段下面的字段做索引 ;
    db.users.ensureIndex({"address.city":1,"address.state":1,"address.pincode":1})


    索引限制:
    索引不能被以下的查询使用:

    正则表达式及非操作符,如 $nin, $not, 等。
    算术运算符,如 $mod, 等。
    $where 子句
    索引键限制
    从2.6版本开始,如果现有的索引字段的值超过索引键的限制,MongoDB中不会创建索引。


    最大范围
    集合中索引不能超过64个
    索引名的长度不能超过128个字符
    一个复合索引最多可以有31个字段


    ObjectId 是一个12字节 BSON 类型数据,有以下格式:

    前4个字节表示时间戳
    接下来的3个字节是机器标识码
    紧接的两个字节由进程id组成(PID)
    最后三个字节是随机数。


    MapReduce 命令
    db.collection.mapReduce(
       function() {emit(key,value);},  //map 函数
       function(key,values) {return reduceFunction},   //reduce 函数
       {
          out: collection,
          query: document,
          sort: document,
          limit: number
       }
    )

    map :映射函数 (生成键值对序列,作为 reduce 函数参数)。
    reduce 统计函数,reduce函数的任务就是将key-values变成key-value,也就是把values数组变成一个单一的值value。。
    out 统计结果存放集合 (不指定则使用临时集合,在客户端断开后自动删除)。
    query 一个筛选条件,只有满足条件的文档才会调用map函数。(query。limit,sort可以随意组合)
    sort 和limit结合的sort排序参数(也是在发往map函数前给文档排序),可以优化分组机制
    limit 发往map函数的文档数量的上限(要是没有limit,单独使用sort的用处不大)

    整理自菜鸟教程

    展开全文
  • mongodb 脚本

    2019-01-22 21:00:29
    https://docs.mongodb.com/manual/tutorial/write-scripts-for-the-mongo-shell/ Shell Helpers JavaScript Equivalents showdbs,showdatabases db.adminCommand('listDatabases') use...

    https://docs.mongodb.com/manual/tutorial/write-scripts-for-the-mongo-shell/

    Shell Helpers JavaScript Equivalents
    show dbsshow databases
    db.adminCommand('listDatabases')
    
    use <db>
    db = db.getSiblingDB('<db>')
    
    show collections
    
     
    db.getCollectionNames()
    
    show users
    
     
    db.getUsers()
    
    show roles
    
     
    db.getRoles({showBuiltinRoles: true})
    
    show log <logname>
    
     
    db.adminCommand({ 'getLog' : '<logname>' })
    
    show logs
    
     
    db.adminCommand({ 'getLog' : '*' })
    
    it
    
     
    cursor = db.collection.find()
    if ( cursor.hasNext() ){
       cursor.next();
    }

    EXAMPLE

    To print all items in a result cursor in mongo shell scripts, use the following idiom:

    cursor = db.collection.find();
    while ( cursor.hasNext() ) {
       printjson( cursor.next() );
    }

    forEach:

    db.collection.find().forEach(<function>)
    db.restaurants.find().forEach( function(myDoc) { print( "name: " + myDoc.name ); } );
    

     

     执行脚本的3中方法

    1.  --eval

    mongo test --eval "printjson(db.getCollectionNames())"

    2.Execute a JavaScript file

    mongo localhost:27017/test myjsfile.js

    3. load:You can execute a .js file from within the mongo shell, using the load() function

    load("myjstest.js")

    报错:    malformed UTF-8 character sequence at offset

    问题原因:插入的数据中存在字符编码问题

    js文件打开,转码程utf-8 就可以

     

    练习:

    批量删除receive库中所有collection 的数据

    my.js

    db = db.getSiblingDB('receive')
    c = db.getCollectionNames();
    c.forEach(function(value, index, array){
        print(value);
      db.getCollection(value).remove({});
    })

     

    在mongo 的shell中执行load('path/my.js')

    练习: 通过聚合搜索出重复的数据,把重复数据保存到文件中

    dd.js 

    dumpcursor = db.getCollection('ProductDev_version').aggregate([
      {$match:{
          "daas.status":"1"
          }},
     {$match:{$or:
        [
             {"data.product_organ_code":"0000"},
             {"data.product_organ_code":{$exists:false}}
       ]}},
     {$group:{_id:{"relversion":"$data.relversion"},count:{$sum:1}}},
     {$match:{count:{$gt:1}}}
     ]
     ,{ allowDiskUse: true });
     
     while(dumpcursor.hasNext()){
         d1 = dumpcursor.next();
         v1 = d1._id.relversion;
         vercursor = db.getCollection('ProductDev_version').find({"daas.status":"1",'data.relversion':v1,$or:
        [
             {"data.product_organ_code":"0000"},
             {"data.product_organ_code":{$exists:false}}
       ]
       },{"metadata.id":1,"metadata.systemtag":1,"metadata.source":1,"metadata.businessObject":1,"data.relversion":1,"data.ec_serial_no":1});
       while(vercursor.hasNext()){
           v2 = vercursor.next();
           printjsononeline(v2)
       }
       
     }
     

    执行:

    mongo ip:27017/dbname dd.js >1.txt

    删除重复的记录数:

    坑: 必须用 foreach,不能有游标,否则有问题

    db = db.getSiblingDB('xxx')
    db.getCollection('xxxxxx').aggregate([
    {$group:{"_id":{"metadataid":"$metadata.id","metadatasystemtag":"$metadata.systemtag"},count:{$sum:1}}},
    {$match:{count:{$gt:1}}}
    ],{ allowDiskUse: true }).forEach(function(dd){
        printjson(dd);
        ddmetaid = dd._id.metadataid;
        ddsystag=dd._id.metadatasystemtag;
        i=1;
        db.getCollection('xxxxxx').aggregate([
        {$match:{"metadata.id":ddmetaid,"metadata.systemtag":ddsystag}},
        {$sort:{"metadata.timestamp":-1}}
        ]).forEach(function(dd2){
            if(i!=1){
                dd2metaid=dd2.metadata.id;
            dd2metatag=dd2.metadata.systemtag;
            dd2timestamp=dd2.metadata.timestamp;
            db.getCollection('xxxxxx').remove({"metadata.id":dd2metaid,"metadata.systemtag":dd2metatag,"metadata.timestamp":dd2timestamp});

            }
            i++;
            })
        })
        

        
        

    展开全文
  • mongodb脚本.json

    2020-07-29 17:52:02
    mongodb创建库以及基本使用脚本说明.
  • MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。本文给大家介绍Python中MySQL数据迁移到MongoDB脚本的方法,需要的朋友参考下
  • mongodb脚本备份

    2019-09-17 17:24:13
    转载于:https://my.oschina.net/jiangshanlinux/blog/1514165

    输入图片说明输入图片说明

    转载于:https://my.oschina.net/jiangshanlinux/blog/1514165

    展开全文
  • NULL 博文链接:https://wangzijian777.iteye.com/blog/1141763
  • https://docs.mongodb.com/manual/core/security-mongodb-configuration/ 多种安装方式,我下载的是tgz,按照如下说明来写shell #!/bin/bash sudo apt-get install libcurl4 openssl cd /software/mong...

    参考官网,下载tar.gz包

    安装参考如下:

    https://docs.mongodb.com/manual/core/security-mongodb-configuration/

    多种安装方式,我下载的是tgz,按照如下说明来写shell

     

     

    #!/bin/bash
    sudo apt-get install libcurl4 openssl
    cd /software/mongodb/
    tar -zxvf mongodb-linux-x86_64-ubuntu1804-4.2.8.tgz
    export PATH=/software/mongodb/mongodb-linux-x86_64-ubuntu1804-4.2.8/bin:$PATH
    echo "mongodb install finished!"

    创建两个对应文件夹及日志文件

    mkdir 

    /software/mongodb/data/db

    touch
    /software/mongodb/data/logs/mongod.log

    用如下命令启动不再需要修改/etc/mongodb.conf就可以远程访问,如果修改下面命令不需要带参数

    #!/bin/bash
    mongod --dbpath /software/mongodb/data/db --logpath /software/mongodb/data/logs/mongod.log --bind_ip 0.0.0.0 --fork

     stop

    #! /bin/bash
    # process-monitor.sh
    process=mongodb
    pid=$(ps x | grep $process | grep -v grep | awk '{print $1}')
    echo $pid
    kill -9 $pid
    echo pid=$pid mongodb is stopped!

     

    展开全文
  • MongoDB脚本备份

    2018-01-12 11:34:31
    shell脚本直接采用mongodump进行备份,直接上代码: #!/bin/bash sourcepath='/usr/bin/' destpath='./mongoback/' nowtime=$(date +%Y%m%d) databasename=Hello collectionname=World username=test password=test...
  • python 部署mongodb脚本

    2018-09-26 10:41:00
    image.png image.png image.png
  • mongodb 脚本操作

    2017-09-27 17:01:00
    MO='mongo'$MO &lt;&lt; EOFuse testdbdb.dropDatabase()show dbsexit;EOF
  • 主要是mongoexport,mongoimport两个命令,导出导入脚本一下作为参考,有什么更好的可以在评论区留言,此篇文章主要为了刚接触mongo的同学减少开发时间 #!/bin/sh startTime=$(date +%F -d" 1 day ago") ...
  • Mongodb脚本记录

    2017-07-27 17:29:00
    mongoexport -h 172.23.88.107 --port 27017 -d stat_terminalbase -c stat_terminalbase -f terminal_mac,detect_time,site_id,device_id,device_longti,device_lat --type=csv -o d:\123.csv ...
  • 文章开始,我们先回顾一下,如何用cmd命令窗口开启mongodb数据库,命令如下:  开启mongodb数据库 cd D:\Program Files\MongoDB\bin mongod --depath "D:\Program Files\MongoDB\data"   看到以上窗口...
  • db.集合名称.aggregate([ { $group: { _id: {要去重的栏位名称: '$要去重的栏位名称'}//可以添加多个条件用逗号隔开,count: {$sum: 1},dups: {$addToSet: '$_id'}} }, { $match: {count: {$gt: 1}} ...
  • 业务需要做一个统计脚本,将一段时间内的数据按照关联设备id进行, 并且每隔5分钟输出一条记录,记录包含统计数量 数据库是mongodb,mysql的以前写过类似的,可以用游标,函数等等,但是mongo好像没有这些。 后来...
  • 1.创建备份和还原所需要的用户&gt; use admin &gt; db.createUser( { user: "backup", pwd: "backup_your_password", roles: [ { role: "...)2.创建备份脚本:#删除2...
  • yum centos7 mongodb
  • Mongodb脚本和CRUD API

    2016-10-25 11:16:44
    原文地址:https://docs.mongodb.com/manual/release-notes/3.2/ ...To provide consistency with the MongoDB drivers’ CRUD (Create/Read/Update/Delete) API, the mongo shell intr
  • 首先查询出符合条件的数据,然后通过循环一条一条的更新数据 var cursor=db.cs_article_secret_reference.find({summary:{$regex:/\\*。,/}}).sort({_id:-1}) while(cursor.hasNext()){ var obj = cursor.next();...
  • python mysql 导出到mongodb脚本

    千次阅读 2016-12-31 12:53:51
    python mysql 导出到mongodb脚本
  • mongodb由C++写就,其名字来自humongous这个单词的中间部分,从名字可见其野心所在就是海量数据的处理。关于它的一个最简洁描述为:scalable, high-performance, open source, schema-free, document-oriented ...
  • mongodb提供的接口都是基于命令行的交互式,我希望能通过shell或者python脚本实监控?貌似在他们的java,python驱动中没发现 监控相关的api,谁有知道怎么使用吗?
  • java 执行cmd命令及mongodb脚本 最近遇到了一个问题,起因是因为想使用java程序来关闭正在运行的Mongod。   最开始想使用强制结束进程的taskkill命令,但是关闭之后Mongo重启会有问题,于是作罢。 在想用Mongo...
  • 从PHP调用MongoDB脚本

    2015-03-22 07:06:30
    <p>I have mongodb script like below <pre><code>function getSalaryByTitle(){ var db = connect('TestMongoDB'); var titles = db.titles.find({},{emp_no:1, title:1}); var titles_detail = titles.next();...
  • MongoDB是一个文档数据库,在存储小文件方面存在天然优势。随着业务求的变化,需要将线上MySQL数据库中的行记录,导入到MongoDB中文档记录。 一、场景:线上MySQL数据库某表迁移到MongoDB,字段无变化。 二、...

空空如也

1 2 3 4 5 ... 20
收藏数 1,755
精华内容 702
关键字:

mongodb脚本