‘mongodb’ 分类下的所有文章
2015八月31

mongodb定时移除数据

mongodb 评论关闭

需求:定时删除mongodb指定库1个月前的数据
bat文件内容:

@echo off
E:mongodbbinmongo  MyDB -u myuser -p mypassword  -quiet removedata.js

js文件内容:

var date = new Date();
date.setDate(date.getDate()-30);
db.bmdMessage.remove({'senddate' : {$lt:date}});

Write Scripts for the mongo Shell

2013十月30

mongodb性能监控

mongodb 评论关闭
profile 可以监控所有慢的以及不慢的查询。
Profiler默认是关闭的,你可以选择全部开启,或者有慢查询的时候开启。
开启:
db.setProfilingLevel(2);
关闭
db.setProfilingLevel(0)
 
开启后会在所在库下生成一个system.profile集合,可利用此集合进行查询,如按查询时间倒排
 
 
 
 
2013十月29

mongodb备份与恢复

mongodb 评论关闭
备份
T:\mongodb\bin\mongodump.exe -h 127.0.0.1 -d BRM_Message  -u saadmin -p L123 -o "d:\backup\mongobak\%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%"
mongorestore -h 127.0.0.1 -d BRM_Message --directoryperdb /backup/mongobak/3/  -u saadmin -p L123

还原:
E:\mongodb\bin>E:\mongodb\bin\mongorestore -h 127.0.0.1 -d BRM_Message  --drop -
-directoryperdb "E:\mongodb\back\11231629\BRM_Message"
connected to: 127.0.0.1
 

http://docs.mongodb.org/v2.2/reference/mongorestore/

 
 
2013九月24

mongodb主从复制配置

准备:
1,主服务器和从服务器的admin数据库中必须有全局用户。
2,主服务器的local数据库和从服务器的local数据均有名为repl且密码相同的用户名。
3,主服务器和从服务器必须开启安全认证:–auth
步骤:
分别连接上主从服务器设置账号
  >use admin
   >db.addUser('sa','LifeIsGood')
   >use local
   >db.addUser('repl','repl')
   >exit
开启:
主服务器重新启动,带参数–auth –master
从服务器重新启动,带参数–auth –slave –source 172.16.88.241

注:从服务器不能进行数据更新操作,只能查询

http://docs.mongodb.org/manual/core/master-slave/

2013九月23

mongodb安装成服务及账号建立

mongodb 评论关闭

一、安装成服务

1、解压mongodb-win32-x86_64-2.4.6.zip到 D:\mongodb
2、在D:\mongodb下创建目录data 与 logs
3、在D:\mongodb\logs下创建mongodb.log文件
4、配置为服务
1)开始–运行–cmd
2)cd D:\Mongodb\bin
3)D:\Mongodb\bin>mongod –logpath D:\MongoDB\logs\MongoDB.log –logappend –dbpath D:\MongoDB\data –directoryperdb –serviceName MongoDB –install
4) net start mongodb

二、账号建立
1,利用mongoVUE连接上去,在admin的users建立账号
2,让mongodb进入授权模式,在启动时增加参数auth
net stop mongodb
sc delete mongodb
mongod –logpath D:\MongoDB\logs\MongoDB.log –logappend –dbpath D:\MongoDB\data –directoryperdb –serviceName MongoDB –install –auth

2013九月22

MongoDB资料汇总专题

mongodb 评论关闭
2013九月22

mongodb 更改数据类型

mongodb 评论关闭

db.bmdMessage.find( { '_id' : { $type : 2 } } ).forEach( function (x) { x._id=ObjectId(x._id); db.bmdMessage.save(x); });

注意:_id的类型创建了则不允许更改。
参考:
修改MongoDB 字段的类型
官方文档

2012十月17

mongodb权威指南笔记

mongodb 评论关闭
1.	安装
①	指定数据库位置
?	mongod.exe --dbpath d:\test\mongodb\data
?	若不指定,默认为c:\data\db\
②	运行:
?	mongod.exe
?	以windows服务运行
安装:>mongod.exe --logpath "mongolog.txt" --install
运行: net start mongodb
?	默认端口:27017
③	csharp开发文档 (http://www.mongodb.org/display/DOCS/CSharp+Driver+Tutorial#CSharpDriverTutorial-Downloading)
④	面向文档的非关系数据库主要解决的问题不是高性能的并发读写,而是保证海量数据存储的同时,具有良好的查询性能。

2.	第2章
①	文档
?	基本单元是文档,类似于数据库中的行
?	每个文档都有特殊的键_id,它在文档所处的集合中是唯一的
?	类似于json,以键值对的形式存在,区分类型与大小写
?	例:> db.test.save( { "username":"asong",age:15} )
②	集合
?	相当于数据库中的表,它里面存储的是“行”文档
?	多个集合组成数据库
?	包含的文档数量> db.test.count()
③	命令操作
?	插入
> db.test.save( { "username":"asong",age:15} )
> db.test.insert({"a":"b"})
?	db:当前数据库
?	test:当前集合
?	显示当前数据库的集合:show collections
?	进行插入时,是否成功如重复,默认是没有提示的
?	查询
> db.text.findOne()
> db.test.find()
db.test.findOne({"username":"asong"})
?	更新
db.test.update({"username":"asong"},{"username":"fangfang"})
?	删除
> db.test.remove({"username":"asong"})
?	>help
?	show dbs
?	输入方法不加括号可看源码如:> db.test.update

3.	第3章创建更新删除文档
①	update可以一次改全部数据, 也可修改文档部分数据
?	$inc:自增 不存在则创建
db.it.update({"name":"pdf"},{"$inc":{"age":3}})
?	$set:设置 不存在则创建
db.it.update({"name":"pdf"},{"$set":{"age":3}})
?	c
若没有,则增加此属性,故可用set 完成文档属性的增加
?	$unset:删除属性
db.it.update({"name":"pdf"},{"$unset":{"age":3}})
②	数组操作
?	值是一文档类型,如db.it.insert({"person":{"name":"zxs",age:28}})
?	$push:增加修改
db.it.update({"name":"pdf"},{"$push":{"www":{"a":3}}})
?	$pop:删除
③	upsert:更新,没有则insert,或者用save

4.	第4章 查询
①	db.it.find({"name":"pdf"})
②	db.it.findOne({"_id":ObjectId("506e3f62e4cfb782ba3d4233")})
③	返回指定属性字段
?	db.it.find({"name":"pdf"},{"age":1,"skill":1})
④	比较运算
?	find({属性:{条件}})  db.test.find({"age":{"$gte":28,"$lte":30}})
?	运算符
$lt:<
$gt:>
$lte,$gte:<=,>=
⑤	逻辑运算
?	OR关系
db.test.find({"$or":[{"age":26},{"age":28}]})
?	IN
db.test.find({"age":{"$in":[26,28]}})
⑥	正则表达式
?	/正则/ :db.test.find({"name":/aso*|fang*/})
⑦	集合遍历
?	> var mycur = db.test.find() > if(mycur.hasNext()) {mycur.next()}
⑧	limit,skip,sort
?	sort:排序 1 升序,-1 降序
?	limit:返回几条结果
?	skip:略过几条,返回剩下的
?	> db.test.find().limit(2).skip(1).sort({"name":1})

5.	第5章 索引
①	创建:1升序 -1降序 :> db.test.ensureIndex({"name":-1})
②	唯一索引:> db.test.ensureIndex({"name":-1},{"unique":true})
③	执行计划查看:explain()
?	> db.test.find({"name":"asong"}).explain() {         "cursor" : "BtreeCursor name_1",         "nscanned" : 3,         "nscannedObjects" : 3,         "n" : 3,         "millis" : 0,         "nYields" : 0,         "nChunkSkips" : 0,         "isMultiKey" : false,         "indexOnly" : false,         "indexBounds" : {                 "name" : [                         [                                 "asong",                                 "asong"                         ]                 ]         } } >
?	结果
cursor:使用的索引,当为BasicCursor时为全表扫描
nscanned:查找的文档数
n:返回的文档数
millis:查询所用时间
④	查看索引:> db.system.indexes.find()
⑤	删除索引:> db.test.dropIndex({"name":1})

6.	第6章 聚合
①	> db.test.count()
②	> db.test.find().distinct({"name","key":"name"})
③	MapReduce:映射化简,将任务拆分到多台服务器执行

7.	第7章 进阶指南
①	db.listCommands():查看命令
②	查看数据库版本及操作系统
?	> db.runCommand({"buildInfo":1})

8.	第8章 管理
①	在mongodb启动时,会启动一HTTP服务器 可通过网页查看数据库性能
?	http://localhost:28017/
②	查看服务器统计信息
?	> db.runCommand({"serverStatus":1})
?	或者cmd下:mongostat
③	备份:mongodump

9.	第9章 复制
①	主从复制
?	一台主机可跑多个mongodb,测试主从
?	启动时指定是主还是从 --master
②	副本集
?	带有故障自动转移的主从复制

10.	第10章 分片
①	将数据拆分,分散到各服务器上
②	复制分发配置都很简单,大部分自动化,核心是键值对,非结构化

11.	第11章 应用举例