mongodb常用命令操作

基本命令

  1. 显示当前数据库服务器上的数据库
    show dbs

  2. 切换到指定数据库的上下文,可以在此上下文中管理testdb数据库以及其中的集合等
    use testdb

  3. 显示数据库中所有的集合(collection)
    show collections

  4. 查看数据库服务器的状态
    db.serverStatus()

  5. 查询指定数据库统计信息
    use fragment

db.stats()

基本DDL和DML

  • 创建数据库。
    直接通过use dbname来切换到这个数据库上下文下面,系统会自动延迟创建该数据库。

use testdb
show dbs (此刻可能testdb数据库并没有被创建)
db (显示当前使用的数据库,结果位testdb)
db.storeCollection.save({'version':'3.5', 'segment':'e3ol6'})  (插入一条数据)
show dbs (此刻能看到testdb被创建)
  • 删除数据库。
    直接使用db.dropDatabase()即可删除数据库。

  • 创建集合。

db.createCollection('replicationColletion', {'capped':true, 'size':10240, 'max':17855200})
show collections 
  • 删除集合。

db.mycoll.drop()
  • 增加纪录。

    • 两种插入方法

    db.storeCollection.save({‘version’:’3.5′, ‘segment’:’e3ol6′})
    db.storeCollection.insert({‘version’:’3.5′, ‘segment’:’e3ol6′})

    若新增的数据中存在主键 ,insert() 会提示错误,而save() 则更改原来的内容为新内容。
    如:
    已存在数据: {_id : 1, ” name ” : ” n1 ” },再次进行插入操作时,
    insert({_id : 1, ” name ” : ” n2 ” }) 会报主键重复的错误提示
    save({ _id : 1, ” name ” : ” n2 ” }) 会把 n1 修改为 n2 。
    相同点:
    若新增的数据中没有主键时,会增加一条记录。
    已存在数据: { _id : 1, ” name ” : ” n1 ” },再次进行插入操作时,
    insert({ " name " : " n2 " }) 插入的数据因为没有主键,所以会增加一条数据
    save({ " name " : " n2 " }) 增加一条数据。

    • 循环插入

    for(var i = 1; i < 100; i++) {

       db.testCollection.insert({
           age : i % 7,
           name : 'name' + Math.round((10 + 20 * Math.random())),
           password : '123456'
       })

    }

  • 更新记录。

db.testCollection.update({age: 6}, {$inc: {age: 1}}) //选择age为6的一条记录,使他的age加1.
db.testCollection.update({age: 7}, {$set: {password : '456789'}}) //选择age为7的一条记录,设置password为456789

//如果条件不匹配一个记录,希望能往数据库里新增一个,设置update函数第三个参数为true就可以。这里age为8条件匹配不到数据。
db.testCollection.update({age: 8}, {$set: {password : '888888'}}, true)


//若要批量更新,设置update函数第四个参数为true就可以了。
db.testCollection.update({age: 7}, {$set: {password : '456789'}}, true, true)

更新version为3.5的记录的segment值。

  • 查询一条纪录。

db.storeCollection.findOne({'version':'3.5'})

参数为查询条件,可选,系统会随机查询获取到满足条件的一条记录(如果存在查询结果数量大于等于1)。

  • 查询多条记录。

db.storeCollection.find()

使用find()函数,参数指定查询条件,不指定条件则查询全部记录。
条件查询包括4种方法:

// 1. $gt(&gt;)、$gte(&gt;=)、$lt(&lt;)、$lt(&lt;=)、$ne(!=)、没有特殊关键字(=)

db.testCollection.find({age: {$$gt:5}}).count() //14。note:去掉gt前面一个$符号,$符号会被解析,wiznote搞的鬼!!!

db.testCollection.find({age: {$gte:5}}).count() //28

db.testCollection.find({age: {$lt:5}}).count() //71

db.testCollection.find({age: {$lte:5}}).count() //85

db.testCollection.find({age: {$ne:5}}).count() //85

db.testCollection.find({age: 5}).count() //14

// 2. 没有特殊关键字(&amp;&amp;)、 $or(||)、$in()、$nin()

db.testCollection.find({age: {$$gt: 5}, password:'123456'}).count() //年龄大于5且密码为123456, 14。

//年龄为5或者名字为name26,18
db.testCollection.find({$or:[{age: 5},  {name:'name26'}]}).count() 

db.testCollection.find({age: {$in: [1,5, 6]}}).count() //年龄在1、5、6中,43。

db.testCollection.find({age: {$nin: [1,5, 6]}}).count() //年龄不在1、5、6中,56

// 3. 正则表达式匹配,威力强劲
db.testCollection.find({name: /^name1\d/}).count() //名字以name1开头的,从name10到name19的记录。41

//4. where语句,大招来了
db.testCollection.find({$where:function(){return this.age &gt; 5} }).count()
  • 删除纪录

db.storeCollection.findOne({'version': '3.5'})   (删除version为3.5的纪录)
db.storeCollection.findOne({'version': '3.5'})   (返回结果为空)
  • 统计集合记录数

db.storeCollection.count()
  • 查询并统计结果记录数

db.storeCollection.find({'segment':'e30l8'}).count()

参考链接

> csdn
cnblogs

    原文作者:子云兄
    原文地址: https://segmentfault.com/a/1190000005095959
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞