mongoDB是一种介于关系型 非关系型中间的数据库。本着拓展知识面的想法,编辑了这篇博客。参考的博客链接如下:http://www.cnblogs.com/knowledgesea/p/4631712.html。
本文只记录如何使用,至于如何安装可以百度其他博客。其安装方法并无什么难点。
/*mongodb 是nosql中面向文档的数据库 介于关系型 非关系型之间
mongodb 的文档 相当于关系型数据库中的一行数据
多个文档的集合 就相当于系型数据库表
多个集合 组合在一起就是一个数据库
支持多个数据库 (mysql很像啊)*/
/*创建数据库*/
use wdb;
/*插入一条数据 insert 里面 是json数据 json数据是一种轻量级的数据交换格式 方便传递 方便解析
姓名张三 拥有财富 12w
保存还可以使用save 好神奇*/
db.wuser.insert({"name": "张三", "money": 12});
/* 查看数据库 */
show dbs;
/*查看数据库下的表 和mysql一样呢*/
show tables;
/*除了转换 还有切换的意思 和mysql 一样呢*/
use wdb;
/*表查询 应该就是sql语句中的 select * from 。。。。*/
db.wuser.find();
/*加条件进行插叙 应该就是sql语句中的 select * from wuser where name = '张三'*/
/*可以查询到*/
db.wuser.find({"name": "张三"});
/*查询不到*/
db.wuser.find({"name": "李四"});
/*修改
张三的财富变成20w啦 前一个是条件 后一个是要修改的财富
重要的事情说三遍
update 后面的name 要加上偶要不 会出现数据丢失呢
update 后面的name 要加上偶要不 会出现数据丢失呢
update 后面的name 要加上偶要不 会出现数据丢失呢*/
db.wuser.update({"name": "张三"}, {"money" : 20, "name" : "张三", "age" : 17});
/*创造20w财富的是李四 */
db.wuser.update({"money": 20}, {"name" : "李四", "money" : 20});
db.wuser.find();
/*删除表数据 相当于SQL 的 delete from wuser where name = '李四'*/
db.wuser.remove({"name" : "李四"});
/*增删改查 和结构化查询语言不一样的地方 最重要的就是 我可以随便更换表的列 而不像sql的表要对应列插入*/
/*有关mongodb的其他命令*/
/*显示当前数据库的名称*/
db;
db.getName();
/*删除数据库 有点草率啊*/
db.dropDatabase();
/*修复当前数据库*/
db.repairDatabase();
/*显示数据库版本*/
db.version();
/*服务ip 以及端口*/
db.getMongo();
/*数据库状态 试验了一下 确实可以获取很多信息*/
db.stats();
/*显示数据库下的表*/
show tables;
db.getCollectionNames();
show collections;
/*删除表 类似于 sql 的drop table */
db.wuser.drop();
/*mongodb 接入javascript风格语
颇有点Oracle 存储过程的意思呢*/
p = {"name": "李四", "money" : 40};
db.wuser.save(p);
p = {"name": "王五", "money" : 30};
db.wuser.insert(p);
db.wuser.find()
/*for循环 var定义 js中定义变量的方法*/
for (var i = 1; i < 2; i++)
db.wuser.insert({"name" : "周" + i, "money" : 10});
/*while 循环查询 语句换行查询貌似存在问题 只能查询最后一行*/
var cursor = db.wuser.find(); while(cursor.hasNext()) printjson(cursor.next());
/*foreach 使用*/
db.wuser.find().forEach(printjson);
/*数组使用 顺便测试了一下大小写 好像是区分大小写的*/
var array = db.wuser.find().toArray(); array[2];
/*查询条数 限制*/
db.wuser.findOne({"name" : "李四"});
db.wuser.find().limit(3);
/*高级查询
面向文档的NoSql数据库重要解决的问题不是高性能的并发读写问题,而是保证海量数据存储的同时,具有比一般数据库更加良好的查询性能*/
/*条件语句 大于 $gt 小于 $lt $gte 大于等于 $lte 小于等于
这算是一种创新啊 以前么见过呢*/
db.wuser.find({"money": {$gt:10}});
db.wuser.find({"money": {$lte:10}});
/*$all 类似于sql 的in*/
db.wuser.insert({"name": "狗十三", "money" : [3, 2]});
db.wuser.find({"money" : {$all:[10]}});
/*判断字段是否存在*/
db.wuser.find({name:{$exists:true}});
/*$mod 取模 除以一个数 余一个数*/
db.wuser.find({money:{$mod:[10,0]}});
/*$ne 可以这么记 not equal*/
db.wuser.find({money:{$ne: 10}});
/*$in $nin 在 与 不在*/
db.wuser.find({money:{$in:[10, 40]}});
db.wuser.find({money:{$nin:[10, 40]}});
/*数组个数*/
db.wuser.find({money:{$size:2}});
/*$not 类似于结构化查询语句中的not like*/
db.wuser.find({name:{$not:/^张.*/}});
/*第四条开始查询*/
db.wuser.find().skip(4);
/*只查询两条*/
db.wuser.find().limit(2);
/* asc*/
db.wuser.find().sort({money: 1});
/* desc*/
db.wuser.find().sort({money: -1});
/*总数统计*/
db.wuser.find().count();
/* 组合起来使用 类似于 between rownum order 等功能*/
文章并未结束,待我深入了解mongoDB,将发表第二篇博客。