精华内容
下载资源
问答
  • MongoDB数据库基本操作

    2016-08-30 15:34:24
    MongoDB数据库基本操作 查看当前数据库 MongoDB shell version:1.8.1 connecting to:test > db test   查看全部数据库列表 >show dbs ChatRoom 0.03125GB admin (empty) ...

    MongoDB数据库基本操作

    查看当前数据库

    MongoDB shell version:1.8.1
    connecting to:test
    > db
    test

     

    查看全部数据库列表

    >show dbs
    ChatRoom    0.03125GB
    admin       (empty)
    local       (empty)

     

    切换数据库

    >use ChatRoom
    switched to db ChatRoom
    >db
    ChatRoom

     

    删除数据库

    复制代码
    >db
    ChatRoom
    >show dbs
    ChatRoom    0.03125GB
    admin       (empty)
    local       (empty)
    >db.dropDatabase()
    {
    "dropped":"ChatRoom","ok":1}
    >show dbs
    admin       (empty)
    local       (empty)
    复制代码

     

     MongoDB帮助主题help

    复制代码
    > help
            db.help()                    help on db methods
            db.mycoll.help()             help on collection methods
            rs.help()                    help on replica set methods
            help connect                 connecting to a db help
            help admin                   administrative help
            help misc                    misc things to know
            help mr                      mapreduce help

            show dbs                     show database names
            show collections             show collections 
    in current database
            show users                   show users 
    in current database
            show profile                 show most recent system.profile entries with time
    >= 1ms
            use 
    <db_name>                set current database
            db.foo.find()                list objects 
    in collection foo
            db.foo.find( { a : 
    1 } )     list objects in foo where a == 1
            it                           result of the last line evaluated; use to furtheriterate
            DBQuery.shellBatchSize 
    = x   set default number of items to display on shell
            exit                         quit the mongo shell
    复制代码

     

    复制代码
    > db.help()
    DB methods:
            db.addUser(username, password[, readOnly
    =false])
            db.auth(username, password)
            db.cloneDatabase(fromhost)
            db.commandHelp(name) returns the help 
    for the command
            db.copyDatabase(fromdb, todb, fromhost)
            db.createCollection(name, { size : ..., capped : ..., max : ... } )
            db.currentOp() displays the current operation 
    in the db
            db.dropDatabase()
            db.eval(func, args) run code server
    -side
            db.getCollection(cname) same as db[
    'cname'or db.cname
            db.getCollectionNames()
            db.getLastError() 
    - just returns the err msg string
            db.getLastErrorObj() 
    - return full status object
            db.getMongo() get the server connection object
            db.getMongo().setSlaveOk() allow this connection to read 
    from the nonmaster member of a replica pair
            db.getName()
            db.getPrevError()
            db.getProfilingLevel() 
    - deprecated
            db.getProfilingStatus() 
    - returns if profiling is on and slow threshold
            db.getReplicationInfo()
            db.getSiblingDB(name) get the db at the same server as this one
            db.isMaster() check replica primary status
            db.killOp(opid) kills the current operation 
    in the db
            db.listCommands() lists all the db commands
            db.printCollectionStats()
            db.printReplicationInfo()
            db.printSlaveReplicationInfo()
            db.printShardingStatus()
            db.removeUser(username)
            db.repairDatabase()
            db.resetError()
            db.runCommand(cmdObj) run a database command.  
    if cmdObj is a string, turns it into { cmdObj : 1 }
            db.serverStatus()
            db.setProfilingLevel(level,
    <slowms>) 0=off 1=slow 2=all
            db.shutdownServer()
            db.stats()
            db.version() current version of the server
            db.getMongo().setSlaveOk() allow queries on a replication slave server
    展开全文
  • mongodb数据库基本操作

    2020-12-28 20:05:30
    MongoDB 操作起来比较简单和容易, MongoDB是一个面向文档存储的数据库。 支持各种编程语言:RUBY,PYTHON,JAVA,C++,PHP,C#等多种语言。 1、查看数据库 show databases; 或者 show dbs; 2、创建数据库/使用...

    MongoDB 操作起来比较简单和容易,
    MongoDB是一个面向文档存储的数据库。
    支持各种编程语言:RUBY,PYTHON,JAVA,C++,PHP,C#等多种语言。

    1、查看数据库

    show databases;
    

    或者

    show dbs;
    

    2、创建数据库/使用数据库

    use 数据库名;
    

    3、删除数据库

    use 数据库;
    db.dropDatabses();
    

    4、创建集合

    db.createCollection("集合名")
    集合名:不能是数字开头
    

    5、查看集合

    show collections;
    或者
    show tables;
    

    6、删除集合

    db.collection.drop()
    

    7、插入文档

    db.collection.insert();
    

    8、查找

    db.collection.find()
    或者
    db.collection.find().pretty()
    

    9、条件查找-等于

    db.collection.find({key:"value"})
    

    10、条件查找-大于/小于

    db.collection.find({key:{$gt:value} })
    $gt
    $lt
    

    11、修改

    db.collection.update({条件},{修改值})
    db.collection.update({"age":19},{"name":"aaa"}) //修改后结果 {"name":"aaa"}
    
    或者
    db.collection.update({条件},{ $set:{"name":"zzzz"} })
    

    12、删除

    db.collection.remove({条件})
    
    展开全文
  • Mongodb数据库基本操作

    2019-03-26 10:16:00
    启动mongodb的服务端和客户端 启动服务端 sudo service mongod start 或者 sudo mongod ...sudo mongod --config /etc/mongod.conf &...mongodb数据库和集合的命令 数据库不需要提前创建,插...
    启动mongodb的服务端和客户端

    启动服务端

    • sudo service mongod start 或者 sudo mongod

      • sudo mongod --config /etc/mongod.conf &(加&表示后台运行)

    启动客户端

    • mongo

    mongodb中数据库和集合的命令
    • 数据库不需要提前创建,插入数据时,自动创建

    • show dbs /show databases # 查看所有数据库

    • use 数据库名 # 使用数据库 (可以是一个当前不存在的数据库,当其中创建了集合,则该数据库才正式创建,否则退出后依然没有)

    • db.dropDatabase() # 删除数据库,不过要先进入该库-- use 要删除的库名

     

    • db # 查看当前所在的数据库

    • 集合不需要提前创建,插入数据时,自动创建

    • show collections # 查看所有的集合

    • db.集合名.drop() # 删除集合

    • db.集合名.find() # 集合的使用

    • db.集合名.insert({key1:value1,keys:value2,....}) # 集合插入数据

      

    > show dbs
    admin  (empty)
    local  0.078GB
    > use test0322
    switched to db test0322
    > show dbs
    admin  (empty)
    local  0.078GB
    > db.createCollection("test")
    > show dbs
    admin     (empty)
    local     0.078GB
    test0322  0.078GB
    > show collections
    system.indexes
    test
    > db.test.find()
    > db.test.insert({gender:"boy",_id:"1001"})
    WriteResult({ "nInserted" : 1 })
    > db.test.find()
    { "_id" : "1001", "gender" : "boy" }
    > db.test.insert({gender:"boy"})
    WriteResult({ "nInserted" : 1 })
    > db.test.find()
    { "_id" : "1001", "gender" : "boy" }
    { "_id" : ObjectId("5c94ebcd09befcda98f4448d"), "gender" : "boy" }

    删除数据库的命令: 先要切换到要删除的库 db.dropDatabase()

    删除集合的命令: db.集合名.drop()

    命令:db.集合名称.remove(<query>,{justOne: <boolean>})

    • db.集合名.remove({条件},{justOne:false}) # 默认删除全部,值为false,如果只删除一条,需要把值设为true或1.

    比较运算符

    插入测试数据

    db.test1.insert([
    {"name" : "郭靖", "hometown" : "蒙古", "age" : 20, "gender" : true },
    {"name" : "⻩蓉", "hometown" : "桃花岛", "age" : 18, "gender" : false },
    {"name" : "华筝", "hometown" : "蒙古", "age" : 18, "gender" : false },
    {"name" : "⻩药师", "hometown" : "桃花岛", "age" : 40, "gender" : true },
    {"name" : "段誉", "hometown" : "⼤理", "age" : 16, "gender" : true },
    {"name" : "段王爷", "hometown" : "⼤理", "age" : 45, "gender" : true },
    {"name" : "洪七公", "hometown" : "华⼭", "age" : 18, "gender" : true }
    ])
    • 等于: 默认是等于判断, 没有运算符

    • ⼩于:$lt (less than)

    • ⼩于等于:$lte (less than equal)

    • ⼤于:$gt (greater than)

    • ⼤于等于:$gte

    • 不等于:$ne

    db.test1.find({age:{$gt:18}})
    逻辑和范围运算符

    or:使⽤$or, 值为数组, 数组中每个元素为json

      查询年龄⼤于18, 或性别为false的学⽣
    db.test1.find({$or:[{age:{$gt:18},gender:false}]})

    查询年龄⼤于等于18或性别为男⽣, 并且姓名是郭靖
    db.test1.find({$or:[{age:{$gte:18},gender:true}],name:'gj'})

    使⽤$in$nin 判断数据是否在某个数组内

     查询年龄为18、 28的学⽣
    db.test1.find({age:{$in:[18,28]}})
    支持正则表达式

    使⽤//或$regex编写正则表达式

    插入测试数据

    db.regex.insert([
    { "_id" : 100, "sku" : "abc123", "description" : "Single line description" },
    { "_id" : 101, "sku" : "abc789", "description" : "First line\nSecond line" },
    { "_id" : 102, "sku" : "xyz456", "description" : "Many spaces before line" },
    { "_id" : 103, "sku" : "xyz789", "description" : "Multiple\nline description" }
    ])

    查询sku以abc开头的数据
    db.regex.find({sku:/^abc/})

    查询sku以789结尾的数据
    db.regex.find({sku:{$regex:'789$'}})

    skip 和 limit
    • ⽅法limit(): ⽤于读取指定数量的⽂档

        db.集合名称.find().limit(NUMBER)
      查询2条学⽣信息
      db.test1.find().limit(2)
    • ⽅法skip(): ⽤于跳过指定数量的⽂档

        db.集合名称.find().skip(NUMBER)
       
    • 同时使用

        db.stu.find().limit(4).skip(5)

      db.stu.find().skip(5).limit(4)
      提示

      注意:先使用skip在使用limit的效率要高于前者

    投影&排序&统计&去重

    投影命令:db.集合名称.find({},{字段名称:1,...})

    db.test1.find({},{name:1,_id:0})

    排序命令:db.集合名称.find().sort({字段:1,...})

    db.test1.find().sort({age:1,gender:-1})

    统计命令:db.集合名称.find({条件}).count() or 命令:db.集合名称.count({条件})

    db.test1.count({age:{$gt:18},gender:true})

    去除重复命令:db.集合名称.distinct('去重字段',{条件})

    db.test1.distinct('hometown')

     

    聚合操作

    语法:db.集合名称.aggregate({管道:{表达式}})

    常用管道命令

    在mongodb中,⽂档处理完毕后, 通过管道进⾏下⼀次处理 常用管道命令如下:

    • $group: 将集合中的⽂档分组, 可⽤于统计结果

    • $match: 过滤数据, 只输出符合条件的⽂档

    • $project: 修改输⼊⽂档的结构, 如重命名、 增加、 删除字段、 创建计算结果

    • $sort: 将输⼊⽂档排序后输出

    • $limit: 限制聚合管道返回的⽂档数

    • $skip: 跳过指定数量的⽂档, 并返回余下的⽂档

    常用表达式

    表达式:处理输⼊⽂档并输出 语法:表达式:'$列名' 常⽤表达式:

    • $sum: 计算总和, $sum:1 表示以⼀倍计数

    • $avg: 计算平均值

    • $min: 获取最⼩值

    • $max: 获取最⼤值

    • $push: 在结果⽂档中插⼊值到⼀个数组中

       

    # group
    db.test1.aggregate({$group:{_id:'$gender',counter:{$sum:1}}})
    { "_id" : false, "counter" : 18 }
    { "_id" : true, "counter" : 27.8 }
    
    
    # group by null
    db.test1.aggregate({$group:{_id:null,counter:{$sum:1}}})
    { "_id" : null, "counter" : 7 }
    
    
    # 数据透视
    db.test1.aggregate({$group:{_id:null,name:{$push:'$name'}}})
    { "_id" : null, "name" : [ "郭靖", "⻩蓉", "华筝", "⻩药师", "段誉", "段王爷", "洪七公" ] }
    #使用$$ROOT可以将整个文档放入数组中
    db.test1.aggregate({$group:{_id:null,name:{$push:'$$ROOT'}}})
    
    # 练习
    # 添加测试数据
    db.user.insert([{ "country" : "china", "province" : "sh", "userid" : "a" },{  "country" : "china", "province" : "sh", "userid" : "b" },{  "country" : "china", "province" : "sh", "userid" : "a" },{  "country" : "china", "province" : "sh", "userid" : "c" },{  "country" : "china", "province" : "bj", "userid" : "da" },{  "country" : "china", "province" : "bj", "userid" : "fa" }])
    
    # 需要统计出每个country/province下的userid的数量(同一个userid只统计一次)
    db.user.aggregate({$group:{_id:{country:'$country',province:'$province',userid:'$userid'}}},{$group:{_id:{country:'$_id.country',province:'$_id.province'},count:{$sum:1}}})
    # { "_id" : { "country" : "china", "province" : "sh" }, "count" : 3 }
    # { "_id" : { "country" : "china", "province" : "bj" }, "count" : 2 }
    
    # match  查询
    db.test1.aggregate({$match:{age:{$gt:18}}},{$group:{_id:'$gender',count:{$sum:1}}})
    # { "_id" : true, "count" : 3 }
    
    # project 用于修改文档的输入输出结构,比如重命名,增加,删除字段
    
    db.test1.aggregate({$project:{_id:0,name:1,age:1}})  # 投影
    
    db.user.aggregate({$group:{_id:{country:'$country',province:'$province',userid:'$userid'}}},{$group:{_id:{country:'$_id.country',province:'$_id.province'},count:{$sum:1}}},{$project:{_id:0,country:'$_id.country',province:'$_id.province',counter:'$count'}})
    '''
    { "country" : "china", "province" : "sh", "counter" : 3 }
    { "country" : "china", "province" : "bj", "counter" : 2 }
    '''
    
    # sort
     db.test1.aggregate({$group:{_id:'$gender',count:{$sum:1}}},{$sort:{count:1}})
    # { "_id" : false, "count" : 2 }
    # { "_id" : true, "count" : 5 }
    
    # skip & limit
     db.test1.aggregate(
         {$group:{_id:"$gender",counter:{$sum:1}}},
         {$sort:{counter:-1}},
         {$skip:1},
         {$limit:1}
     )
    # { "_id" : false, "counter" : 2 }
    mongodb创建简单的索引方法
    • 语法:

      • db.集合.ensureIndex({属性:1}),1表示升序, -1表示降序

      • db.集合.createIndex({属性:1})

      • 上面两个命令效果等价

    • 具体操作:db.db_name.ensureIndex({name:1})

    索引的查看

    默认情况下_id是集合的索引

    查看方式:db.collection_name.getIndexes()

    创建唯一索引

    db.collection_name.ensureIndex({"name":1},{"unique":true})

    删除索引

    语法:db.t1.dropIndex({'索引名称':1})

    建立符合索引

    建立复合索引的语法:db.collection_name.ensureIndex({字段1:1,字段2:1})

    mongodb的备份和恢复

    • 备份的语法:mongodump -h dbhost -d dbname -o dbdirectory

    • -h: 服务器地址, 也可以指定端⼝号

    • -d: 需要备份的数据库名称

    • -o: 备份的数据存放位置, 此⽬录中存放着备份出来的数据

    示例:mongodump -h 192.168.196.128:27017 -d test1 -o ~/Desktop/test1bak

    恢复语法:mongorestore -h dbhost -d dbname --dir dbdirectory

    • -h: 服务器地址

    • -d: 需要恢复的数据库实例

    • --dir: 备份数据所在位置

    示例:mongorestore -h 192.168.196.128:27017 -d test2 --dir ~/Desktop/test1bak/test1

     

    manogodb与python的交互

    pymongo 提供了mongdb和python交互的所有方法 安装方式: pip install pymongo

    from pymongo import MongoClient
    
    # 创建数据库连接对象
    client = MongoClient(host='127.0.0.1',port=27017)
    # 选择具体的存储数据库和集合,client[db_name][collection]
    collection = client['test0322']['t1']
    
    # 插入一条数据
    # ret = collection.insert_one({'name':'jason','age':26})
    # print(ret)
    
    # 插入多条数据
    # item_list = [{'name':'py_{}'.format(i)} for i in range(10)]
    # t = collection.insert_many(item_list)
    
    # 查询一条数据
    # t = collection.find_one({'name':'py_0'})
    # print(t)
    
    # 查询全部数据
    t = collection.find({'name':'py_9'})
    #结果是一个Cursor游标对象,是一个可迭代对象,可以类似读文件的指针,
    # 可以使用强制类型转换成列表就可重复从列表中取值 t = list(t)
    for i in t:
        print(i)
    print('*'*100)
    
    for i in t: #此时t中没有内容
        print(i)
    
    
    #更新一条数据
    # collection.update({'name':'py_1'},{'$set':{'name':'py_2'}})
    
    # 更新全部数据
    # collection.update_many({'name':'py_2'},{'$set':{'name':'py_0'}})
    
    # 删除一条数据
    # collection.delete_one({'name':'py_0'})
    
    # 删除全部数据
    # collection.delete_many({'name':'py_0'})
    View Code

    转载于:https://www.cnblogs.com/jason-Gan/p/10598521.html

    展开全文

空空如也

空空如也

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

mongodb数据库基本操作