mongodb的基本操作整理

时间:2021-04-01 02:36:07

mongodb 基本操作

      创建为windows服务   mongod --install --serviceName MongoDB --serviceDisplayName MongoDB --logpath D:\mongodb\data\log\MongoDB.log --dbpath D:\mongodb\data\db --directoryperdb  

基本命令

开启服务

mongodb\bin>mongod --dbpath "D:\mongodb\data\db"


bin目录下新开CMD 连接mongo服务
bin>mongo

查看有那些数据库:

 

show dbs;

   

选择某个库:

 

use db;

   

查看库下的表(暂且说成是表,mongodb中称表问文档):

 

show collections;


如果不存在会直接创建新库use mark创建表

db.createCollection("mycollection")

显示表show collections

创建系统管理员

use admin

db.createUser(  {    

user: "mark",    pwd: "123456",   

 roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]  })

添加成功

删除用户db.dropUser("mark");

创建单个DB的管理员use db1

db.dropUser("test");

db.createUser(  {    user: "test",    pwd: "123456",   

 roles: [ { role: "userAdmin", db: "test" },    { role: "readWrite", db: "test" } ]  })

db.auth("test","123456")

连接测试mongo test -u test -p 123456

查找所有用户db.getUsers();

创建不受限制的超级用户

use admin

db.createUser(    {      user: "superuser",      pwd: "12345678",      roles: [ "root" ]    })

list database 需要使用admin库的权限

   

插入数据:

 

db.table.insert( {'name':'demo','sex':'m','age':18} );

 

(注意在插入数据时的数据类型)

 

插入数据可随意定义每行的结构,mongodb中没有固定的表结构

 

  eg: db.table.insert( {'names':'demo','sexs':'m','age':20} );

   

查询数据:

 

db.table.find();

 

(在查询有条件的数据时,就要注意到数据类型的问题了)

 

eg:

 

db.table.insert( {'id':'123','age':18} );

 

db.table.insert( {'id':123 ,'age':20} );

 

db.table.find( {'id':123} );  # 只能查看到第二条数据

   

另外一些条件(如下用法):

 

$lt(小于),$lte(小于等于),$gt(大于),$gte(大于等于),$ne(不等于)

 

db.table.find( {'age':{ '$lt':19 } } )

   

排序:

 

db.table.find().sort( {'age':1} )

 

1 表示升序 -1 表示降序

   

分页:

 

db.table.find().limit(10).skip(20);

 

( skip 规定忽略几个,上述查询类似mysql中的 limit 20,10 )

   

查询数量:

 

db.table.count();

 

db.table.find( {'age':{'$lt':19} } ).count()

   

删除数据:

 

db.table.remove();//删除全部

 

db.table.remove( {'id':123} );//删除指定数据

     

更新数据:

 

db.table.update( {'id':123},{'age':25} )

 

// 查找id为123的数据,将其age字段更新为25

   

do.table.update( {'id':123} , {'age':22} ,true );

 

// 类似于mysql的 replace用法 存在则更新,不存在则添加

   

索引:

 

db.table.ensureIndex({'id':1})// 创建索引

 

db.table.dropIndex({'id':1})// 删除索引

 

db.table.ensureIndex({'id':1},{unique:true}); // 独立索引

 

db.table.ensureIndex({'id':1,'age':1})// 联合索引

   

备份(使用 mongodump.exe 备份数据):

 

mongodump.exe -d learn -o backup   (备份整个 learn 数据库)

 

mongodump.exe -d learn -c test -o backup (备份单独的表)

 

( -d 数据库 -c 数据表 -o 备份目录)

   

恢复数据库( 使用 mongorestore.exe 恢复):

 

mongorestore.exe -d lear -c test backup/learn/unicorns.bson

 

( -d 数据库 -c 数据表 )

   

导出数据:

 

mongoexport.exe -d test -c mapinfo -o export.dat( 导出数据为json格式数据,默认格式 )

 

( -d 数据库 -c 表 -o 导出文件名)

   

mongoexport.exe -d test -c mapinfo --csv -f id,name -o csv.csv (导出数据为csv格式数据)

 

( -d 数据库 -c 表 --csv 导出为csv格式 -f 导出字段名 -o 导出文件名)

   

导入数据:

 

mongoimport.exe -d test -c mapinfo mapinfo.dat (导入 json 格式数据 ,默认格式)

 

(-d 数据库 -c 表   数据源)

   

mongoimport.exe -d test -c mapinfo --type csv --headerline --file csv.csv   (导入csv格式数据)

 

( -d 数据库 -c 表 --type 类型 --headerline 不导入第一行  --file 数据源)