MongoDB-开始学习MongoDB(一)
先来看看MongoDB的优缺点:
优点:简单的扩展、快速的读写、灵活的数据类型
缺点:不支持对SQL的支持、支持的特性不够丰富、现有产品不够成熟
应用场景:
适用场景: 持久化缓存层、实时的高效性(读写速度快)、用于文件和对象的存储、高伸缩性的存储、非关系型数据的存储
不适用场景: 高度事务、复杂多表查询
1.安装
http://www.mongodb.org/dr/fastdl.mongodb.org/linux/mongodb-linux-i686-2.4.6.tgz/download
解压: tar -xzf mongodb-linux-i686-2.4.6.tgz
拷贝到指定目录下: cp mongodb-linux-i686-2.4.6 /usr/local/mongodb
启动服务: /usr/local/mongodb/bin/mongod --dbpath=/usr/local/mongodb/data --logpath=/usr/local/mongodb/mongo.log #启动的同时设置数据和日志存储位置 其中锁文件存储在data目录下
开机启动: 把上一句话添加到/etc/rc.local中
关闭服务: pkill mongod
2.进入客户端进行操作
执行/usr/local/mongodb/bin/mongo启动客户端程序
3.入门前知识
以BSON二进制方式存储数据
4.客户端操作详解
数据库和表都为隐式创建, 不用单独创建。
对比普通关系型数据库:
普通数据库: 数据库->表->行记录
MongoDB: 数据库->集合->文档
其中服务器端一个数据库存储: dbname.ns, dbname.0, dbname.1...dbname.n
数据类型:
null, 布尔类型, 32位整数, 64位整数, 64位浮点数, 字符串, ObjectId, 日期(使用的时候如{one: new Date()}), 正则表达式({"one": /abc/}), JS代码({"one": function() {...}}), 数组, 内嵌文档
命令:
魔术方法:
查询时魔术方法在Json内侧, 修改时魔术方法在Json外侧
db; 查看当前数据库
show dbs; 查看所有数据库
show collections; 查看本数据库所有表
增:
每条新增的文档都会有一个"_id"字段
db.cname.insert({name: "John"});
db.cname.save({name: "John"}); #以上两个都是插入, 不过save是根据_id判断是否存在而执行替换或插入; 相当于MySQL的replace into; _id存在则更改, _id不存在则插入;
删:
db.cname.remove({name: "John"});
db.cname.remove();
改:
查:
db.cname.count(0); #参数为0或者1分别表示当计算总条数的时候包不包括查询条件
db.cname.find().count(); #同上 查询出总共有多少条文档
db.cname.sort({name: 1});
db.cname.sort({name: -1}); #根据name进行倒序 上一条为正序
db.cname.find({name: "John"}); #查询出name为John的文档
db.cname.find({name: "John"}, {age: 1, sex: 1, _id: 0}); #查询出name为John的文档, 并且只返回age和sex字段
db.cname.find({age: {$gt: 20}}); #查询出cname中age>20的文档
db.cname.find().limit(4); #查询出几条数据
db.cname.skip(2).limit(3); #跳过几条数据, 与上面一条结合实现分页技术
db.cname.find();
db.cname.remove();
db.cname.update({name: "John"}, {name: "Nali"});