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

    use test_database

    show collections

    db.table_name.renameCollection("new_name")

    db.createColletion("table_name")

    db.createCollection("Test",{capped:true, size:10000}) { "ok" : 1 }

    capped:true,表示该集合的结构不能被修改;

    db.table.findOne() return dict  

    db.table.find() return cursor

    size:在建表之初就指定一定的空间大小,接下来的插入操作会不断地按顺序APPEND数据在这个预分配好空间的文件中,如果已经超出空间大小,则回到文件头覆盖原来的数据继续插入。这种结构保证了插入和查询的高效性,它不允许删除单个记录,更新的也有限制:不能超过原有记录的大小。这种表效率很高,它适用于一些暂时保存数据的场合,比如网站中登录用户的session信息,又比如一些程序的监控日志,都是属于过了一定的时间就可以被覆盖的数据。

    数据表帮助主题help

    db.Account.help()

     db.Account.find().help()

    DBQuery.shellBatchSize = 20(default) 

    • Start server: mongod –dbpath C:mongodbdatadb3
    • Start client: mongo

    Advanced command: mongo –host 127.0.0.1 –port 27017

    • Client command: (the green part is mutable)

             List all databases: show databases

             Change database: use test_database

             List all table: show collections

              Count: db.table_name.find().count()

             Drop table: db.table_name.drop()

             Create index: db.table_name.createIndex({“class_name”:1, “method_name”:1})

                                   db.table_name.ensureIndex({“class_name”:1, “method_name”:1})

             drop indexes: db.table_name.dropIndexes()

             update: db.table_name.update(condition, data)

                          condition like: {“_id”:ObjectId(“xxxx”)},  data like: {“$set”:{“access_flag”:xxx}}, 如果不用$set, 则会覆盖整条数据而不是更新。

                         批量更改,某一列等于另一列的值:

                         db.getCollection('TestCase').find({"csv.total_lines":{"$exists":"true"}}).forEach(
                              function(item){
                              db.getCollection('TestCase').update({"_id":item._id},{"$set":{"expect":item.csv.total_lines}},multi=true)
                              }
                         )

             remove: db.table_name.remove(condition)

             Query:

                 db.table_name.find({“class_name”:xxx, “method_name”:xxx})

                 db.table_name.find({age:{$lt:30}}).hint({name:1, age:1}).explain()    ---红色部分强制使用索引

                 指定显示name, age两列:db.table_name.find({}, {name:1, age:1})

                 嵌套:{name:'Tom', contact: {email:"xx@126.com", phone:88837776}}

                         db.table_name.find({'contact.email':{$regex:'126.com'}}, {'name':1, 'contact.email':1})

             db.table_name.find({'name':'Tom', {$or:[{a:1}, {b:2}]}})

                 db.table_name.find({'name':{$exists:true}})

                 如果表内数据很多,查询会因timeout而失败,这时候要将timeout参数设为flase:

                     db.table_name.find(timeout=False)

             field是数组的查询:

             db.table.find({field1: {$in:['aa', 'bbb]}}) 把field1 为aa 和bb的纪录都查找出来

             db.table.find({field1: {$all:['aa', 'bbb']}}) 查询field1数组中同时存在 aa, bb的纪录

             获取表头(pymongo)

             list(sorted(self.db['table'].find_one().__iter__()))

    • stop server or client: ctrl + c


     

  • 相关阅读:
    PAT 甲级 1128 N Queens Puzzle
    HDU 1995 R-汉诺塔V
    PAT L1-039 古风排版
    PAT L2-028 秀恩爱分得快
    ZOJ 2060 A-Fibonacci Again
    HDU 2079 选课时间
    HDU 1016 Prime Ring Problem
    理论相关概念原理
    单播字符、字符串收发
    OSAL的原理
  • 原文地址:https://www.cnblogs.com/snow-backup/p/2961947.html
Copyright © 2011-2022 走看看