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>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 数据源)