MongoDB笔记:windows环境安装及连接本地数据库
下载MongoDB 2.4.9版
mongodb官网下载:http://www.mongodb.org/downloads
直接下载地址:http://fastdl.mongodb.org/win32/mongodb-win32-x86_64-2008plus-2.4.9.zip
3.6高版本下载地址:https://fastdl.mongodb.org/win32/mongodb-win32-x86_64-2008plus-ssl-3.6.17.zip
安装步骤:
1、将下载的mongodb压缩包解压到对应文件夹,我的是:D:\SoftInstall\mongodb,请注意,我的bin目录是:D:\SoftInstall\mongodb\bin,注意自己的bin目录是否和我的相同
2、配置(请用管理员权限打开cmd,并切换到mongodb安装的文件夹,如:cd /d D:\SoftInstall\mongodb\bin):
1)创建一个目录用于保存MongoDB的日志文件:md D:\SoftInstall\mongodb\log,然后增加配置:echo logpath=D:\SoftInstall\mongodb\log\mongo.log > D:\SoftInstall\mongodb\mongod.cfg
2)创建数据库和日志文件的目录:md D:\softInstall\mongodb\data\db,然后增加配置:mongod --config D:\SoftInstall\mongodb\mongod.cfg --dbpath D:\SoftInstall\mongodb\data\db\ --install
3、安装和运行mongodb:
1)安装mongodb服务:mongod.exe --config D:\SoftInstall\mongodb\mongod.cfg --install
2)运行mongodb:net start mongodb(停止命令为:net stop mongodb)
3)连接到mongodb:mongo
4)创建用户:切换到admin:use admin,创建用户:db.addUser("admin","admin"); 查看用户:db.system.users.find();(注意:mongodb的语句后要加 ; 号)
5)查看数据库:show dbs
至此,mongodb安装完成,可以在可视化工具如MongoBooster中通过localhost连接到本地数据库
PS:
1、安装过程中可能出现的错误:
1)net start mongodb出错:服务无法启动,发生系统错误1067。请打开配置文件D:\SoftInstall\mongodb\mongod.cfg,看下是否加上配置:dbpath=D:\SoftInstall\mongodb\data\db\,没有,请手动加上。
2)通过工具连接,MongoError:auth fails错误:请在对应的集合加上用户,安装步骤3已经给出了切换数据库和创建用户的命令。
3)出现类似:Error: couldn't connect to server 127.0.0.1:27017 src/mongo/shell/mongo.js的错误,在bin目录下运行:mongod.exe -logpath D:\mongo_log\mongodb.log -logappend -dbpath D:\mongo_data -directoryperdb -serviceName MongoDB -remove,然后再按照安装步骤,重新安装MongoDB
2、MongoDB查询语句:
1)db.collection.drop(); // 删除集合
2)db.messageDetail.find({}); // 查询集合
3)db.messageDetail.find({"status":4}); // 根据字段查询
4)db.messageDetail.find({"status":{ $ne : 4 }}); // "$lt", "$lte", "$gt", "$gte", "$ne"对应于"<", "<=", ">", ">=","!="
5)db.messageDetail.find({"createTime" : {$lte:new Date(2017,10,26)}}); // 时间查询
6)db.messageDetail.find({"$where":function () { if(this.count > 0) return true;}}); // 函数查询
7)db.messageLogs.find({}).sort({"createTime":-1}); // 查询结果排序
8)db.messageDetail.insert({_id:"terast",type:"type1",system:"test"}); // 插入
9)db.messageDetail.find({"createdDate":{"$lte":new Date(Date.now() - 180000)}}); // 查询小于或等于当前时间三分钟之前的数据
10)db.messageDetail.aggregate([{ $match: { status: 3 } },{ $group: { _id: "$projectId","time": {$last: "$updatedDate"}, lastVersionManager:{"$last": "$versionManager" } } }]); // 分组查询
11)db.messageDetail.aggregate([{"$group" : {_id:{source:"$source",status:"$status"}, count:{$sum:1}}}]) // 多个字段分组查询,计算每个分组数
12)db.dictateLoggerPO.aggregate([{"$group" : {_id:"$projectId"}}]).forEach(function(item){
var count = db.dictateLoggerPO.find({projectId:item._id, "createdDate" : {"$gte":new Date(Date.now() - 2592000000)}}).count();
if(count > 50){
console.log("领域:" + item._id + "最近一个月的通过管控指令发布次数为:" + count);
var deleteCount = db.dictateLoggerPO.find({projectId:item._id, "createdDate" : {"$lte":new Date(Date.now() - 2592000000)}}).count();
db.dictateLoggerPO.deleteMany({projectId:item._id, "createdDate" : {"$lte":new Date(Date.now() - 2592000000)}});
console.log("领域:" + item._id + "删除一个月以前的数据总数为:" + deleteCount)
}
}); // 分组聚合后,遍历,根据条件删除数据
13)db.pizzaConfigPO.find({_id:/tps/}) //模糊查询