Mongdb 使用笔记备忘

本文介绍了如何在Windows环境下配置和管理MongoDB服务,包括创建数据库和服务、用户管理、解决常见问题等,并提供了实例演示数据操作及索引管理。

windows 下创建服务:

创建数据库  
我们通过使用“use new-databasename”的语法去使用一个新的数据库,注意,即使你的数据库还没建立起来,依然可以这样使用,因为mongodb会在真正插入了数据后,才会真正建立起来。
>use mkyongdb
switched to db mkyongdb
> show dbs 
admin  0.03125GB
local  (empty)
 注意,在use mkyongdb后,mkyongdb实际上还没真正建立起来,只是表明目前是在使用mkyongdb了。
  3)保存数据
  定义一个collection,名为“users”,然后插入数据,如下:
> db.users.save( {username:"mkyong"} )
> db.users.find()
{ "_id" : ObjectId("4dbac7bfea37068bd0987573"), "username" : "mkyong" }
>
> show dbs  -www.linuxidc.com-
admin  0.03125GB
local  (empty)
mkyongdb        0.03125GB
 可以看到,用db.users.find()可以找出已插入的数据。这个时候,名为“users”的collection已经建立起来了,同时,数据库mkyongdb也建立起来了。


mongod --dbpath=D:/MongoDB/data --logpath=D:/MongoDB/logs/mongodb.log --directoryperdb --auth --serviceName=MongoDB --install

mongod --auth --logpath "D:/MongoDB/logs/mongodb.log" --logappend --dbpath "D:/MongoDB/data" --directoryperdb --serviceName MongoDB --reinstall

mongod --dbpath "D:\Program Files\mongodb\data\db" --logpath "D:\Program Files\mongodb\data\log\MongoDB.log" --auth

创建管理员:
db.createUser({user:"root",pwd:"123456",roles:[{role:"userAdminAnyDatabase",db:"admin"}]});

db.createUser({user:"admin",pwd:"123456",roles:[{role:"userAdminAnyDatabase",db:"admin"},{role:"readWriteAnyDatabase",db:"admin"}]});

db.createUser({user:"root",pwd:"123456",roles:[{role:"root",db:"admin"}]});

db.createUser({user:'appUser',pwd:'123456',roles:[{role:'dbOwner',db:'blog'}]}

给角色追加权限:
db.grantRolesToUser('appUser',[{'role':'dbOwner', 'db':'node_club_dev'}])

连接数据库:
mongo localhost/blog -u appUser -p 123456

mongo --port 27017 -u admin -p 123456 --authenticationDatabase admin

删除Windows服务:
首先在服务设置里把当前的MongoDB服务停止。
然后在命令行运行(当前路径随便在哪里都可以): sc delete MongoDB


问题:
1.MongoDB服务无法启动,发生服务特定错误:100
原因:没有正常关闭mongod服务,导致mongod被锁
解决方案:进入db文件夹,删除mongod.lock文件,然后重新启动服务即可

2.MongoDB_3.0后 app 认证问题
由于之前使用的system.version文档里面的authSchema版本为3,而初始安装时是5,故需修改为3

首先切换至未认证模式,连接终端后执行:
> use admin 
switched to db admin 
> var schema = db.system.version.findOne({"_id" : "authSchema"}) 
> schema.currentVersion = 3 

> db.system.version.save(schema) 
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })


进入你的app所使用的库(以下脚本需在以上脚本之后执行,否则需删除用户( db.dropUser("appUser") ),重新创建)
> use blog
> db.createUser({user:'appUser', pwd:'123456',roles:[{role:'dbOwner',db:'blog'}]})


-----------------------------------------------------------------------------------------
1、一次性插入多条数据
for(var i=0;i<100000;i++){
    db.stock.insert({"name":"zhouchen"+i,"age":i});
}
2.查看执行计划.具体执行时间等信息
db.stock.find({"name":"zhouchen10000"}).explain("executionStats");

3.建立索引
db.stock.ensureIndex({"name":1},{"unique":true})

4、查看当前集合索引
db.stock.getIndexes();
5、删除索引
db.stock.dropIndexes("index_name");

6.主从复制
http://www.cnblogs.com/huangxincheng/archive/2012/03/04/2379755.html


7;新增字段{$set{}}
db.pingpun.update({gouride:'王聘群'},{$set{usersid:'57c67751b2da96da3b6dc3c5'}})


8.db.pingpun.find({}).skip(0).limit(6); 分页

9:求总记录数 db.pingpun.find({usersid:'57c67751b2da96da3b6dc3c5'}).count();

-------------------------------------------------------------------------------------------

转载于:https://my.oschina.net/u/2988090/blog/776683

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值