mongoDB是Nosql数据库,可操作json类似的格式数据。安装和学习文档在
http://www.mongodb.org/display/DOCS/Quickstart+Unix(这个文档必须现在就读) ,进一步学习见:http://www.mongodb.org/display/DOCS/Tutorial
注意:启动就进入解压后的目录./mongod即可,用top查看发现有mongod进程说明启动了。client连接用./mongo 这时在ubuntu中需要安装terminator来实现多窗口,见ubuntu下的博文。
Rails中调用Mongodb
不要采用mongodb.org的官方方法,官方让我们用gem "mongo_mapper"的方法,而最好的方法却是用http://mongoid.org/ 这个更加专业的gem。
rails中的Schema定义表结构对于nosql数据库而言,已经没有任何意义了。所以只要在model中定义就好了。
Mongodb常用命令
use test - 切换到test数据库,如果test数据库不存在,则会自动创建test数据库
show dbs -显示所有数据库
db - 显示当前数据库,就是use的结果
db.user.insert({uid:1,username:"zhangJian",age:25,school:"heHai大学"})
show tables - 显示当前数据库下的所有表(以下默认为当前数据库)
db.user.find() - 查询user的所有数据
db.user.find - 查看find方法的定义
db.user.find({username:"zhangJian"}) -带条件查询,大小写是区分的
db.user.update({uid:1},{$set:{age:29}}) - 更新
db.user.remove() - s删除user表的全部数据
db.user.remove({uid:5}) - s删除user表所有uid=5的数据
深入学习:
http://www.mongodb.org/display/DOCS/Dot+Notation+%28Reaching+into+Objects%29
db.things.getIndexes()
ensureIndex()
Shard就是分段,太大了,就分分段,比如如果只查询最近的某个集合,那么在create_at上面Shard效果不错
如果不恰当的关闭系统导致mongodb可能不能启动,可以通过./mongod --repair修复。
疑问
It is more difficult to get a system-level view for embedded objects. When needed an operation of this sort is performed by using MongoDB's map/reduce facility.