mongodb安装及概念
mongodb的图标是一片树叶,要熟记。下载地址:http://www.mongodb.org/downloads
安装步骤:
1/把mongodb安装到某一个盘符下(D)
2/创建数据目录 D:data/db文件夹
3/找到mongodb文件夹下的bin文件夹打开mongod.exe
4/双击打开mongo.exe
5/浏览器输入127.0.0.1:27017测试,显示如下图表示安装成功
mongodb的概念:是一个基于分布式文件存储的数据库。
作用:旨在为WEB应用提供可扩展的高性能数据存储解决方案。是世界上目前用的最广泛的nosql数据库(非关系型数据库)。
特点:高性能、易部署、易使用,存储数据非常方便。
优点:
1/面向文档储存的数据库(BSON格式存储)
2/具有丰富的查询指令
3/支持索引
4/具有分片系统
5/无模式
缺点:
1/占用空间非常大
2/不支持事务
3/目前已经不维护32位的系统的了
mongodb数据库与sql数据库的术语差别
一个mongodb中可以建立多个数据库。
MongoDB的默认数据库为"db",该数据库存储在data目录中。
MongoDB的单个实例可以容纳多个独立的数据库,每一个都有自己的集合和权限,不同的数据库也放置在不同的文件中。
数据库命名:通过标识符,一般是utf-8字符串,不能为空,不能用local/admin/config这三个;
指令
mongo的基础指令
show dbs 获取你当前所有的数据库
use dataBase_name 创建数据库(没有-创建/存在-使用)
db 指查询你当前的数据库
db.stats() 查询你当前数据库的状态
db.dropDatabase() 删除你当前的数据库
db.help() 查询帮助
db.version() 获取你当前数据库的版本
db.database_name.help() 查询任意数据库的帮助
db.collection_name.find() 查询你当前集合内的信息
insert插入 db.album.insertOne({‘title’:’xxxx’}),
查看采用db.album.find();
插入多条数据insertMany([{},{},{}])/insert
集合的命名不能是空字符串,也不能出现-,0等,不能以system,$开头
数据类型:
Collection聚集集合操作:
1.创建一个聚集集合
db.createCollection(“collName”, {size: 20, capped: true, max: 100});
db.collName.isCapped(); //判断集合是否为定容量
2.得到指定名称的聚集集合
db.getCollection(“account”);
3.得到当前db的所有聚集集合
db.getCollectionNames();
4.显示当前db所有聚集的状态
db.printCollectionStats();
5.删除集合
db.collectionname.drop();
1.添加
db.users.save({name: ‘zhangsan’, age: 25, sex: true});
2.修改
所有数据都添加一个artist
db.albums.updateMany({},{KaTeX parse error: Expected 'EOF', got '}' at position 18: …t:{artist:‘哈哈’}}̲) db.users.upda…set: {name: ‘changeName’}}, false, true);
相当于:update users set name = ‘changeName’ where age = 25;
1/修改的数据不存在—第一个参数false(不添加)true(添加)
2/数据有重复的---第二个参数true符合条件的数据均修改,false默认修改第一条数据
db.users.update({name: ‘Lisi’}, {KaTeX parse error: Expected 'EOF', got '}' at position 15: inc: {age: 50}}̲, false, true);…inc: {age: 50}, $set: {name: ‘hoho’}}, false, true);
相当于:update users set age = age + 50, name = ‘hoho’ where name = ‘Lisi’;
3.删除
db.users.remove({age: 132});
21条查询语句:
1.查询所有记录
db.userInfo.find();
相当于:select* from userInfo;
2.查询去重后数据
db.userInfo.distinct(“name”);
相当于:select distict name from userInfo;
3.查询age = 22的记录
db.userInfo.find({“age”: 22});
相当于: select * from userInfo where age = 22;
4.查询age > 22的记录
db.userInfo.find({age: {KaTeX parse error: Expected 'EOF', got '}' at position 7: gt: 22}̲}); 相当于:select …lt: 22}});
相当于:select * from userInfo where age <22;
6.查询age >= 25的记录
db.userInfo.find({age: {KaTeX parse error: Expected 'EOF', got '}' at position 8: gte: 25}̲}); 相当于:select …lte: 25}});
8.查询age >= 23 并且 age <= 26
db.userInfo.find({age: {$gte: 23, KaTeX parse error: Expected 'EOF', got '}' at position 8: lte: 26}̲}); 9.查询name中包含…gt: 25}}, {name: 1, age: 1});
相当于:select name, age from userInfo where age >25;
13.按照年龄排序
升序:db.userInfo.find().sort({age: 1});
降序:db.userInfo.find().sort({age: -1});
14.查询name = zhangsan, age = 22的数据
db.userInfo.find({name: ‘zhangsan’, age: 22});
相当于:select * from userInfo where name = ‘zhangsan’ and age = ’22’;
15.查询前5条数据
db.userInfo.find().limit(5);
相当于:select top 5 * from userInfo;
16.查询10条以后的数据
db.userInfo.find().skip(10);
相当于:select * from userInfo where id not in (
select top 10 * from userInfo
);
17.限制数据量/几条数据后
db.userInfo.find().limit(10).skip(5);
18.or与 查询
db.userInfo.find({KaTeX parse error: Expected 'EOF', got '}' at position 27: …22}, {age: 25}]}̲); 相当于:select *…gte: 25}}).count();
相当于:select count(*) from userInfo where age >= 20;
21.查询某一项的记录数目
db.userInfo.find({sex: {$exists: true}}).count();
相当于:select count(sex) from userInfo;
mongoose
nodejs连接mongodb数据库
var mongodb=require(‘mongodb’).MongoClient;
var db_str=“mongodb://localhost:27017/zys”;
mongodb.connect(db_str,(err,dbs)=>{
if(err) throw err;
dbs.collection(“info”,(err,coll) => {
if(err) throw err;
// coll.find().toArray((err,data)=>{
// if(err) throw err;
// console.log(data);
// dbs.close()
// })
// coll.insert({name:“烈火英雄”},()=>{
// console.log(‘success’);
// dbs.close()
// })
// coll.remove({name:“烈火英雄”},()=>{
// console.log(‘success’);
// dbs.close();
// })
coll.update({name:“小红”},{$set:{name:“小亮”}},()=>{
console.log(‘success’);
dbs.close();
})
})
})
使用mongoose使nodejs连接mongodb数据库
var mongoose=require(‘mongoose’)
var db_str=“mongodb://localhost:27017/zys”;
mongoose.connect(db_str)
mongoose.connection.on(‘connected’,()=>{
console.log(‘连接成功’)
})
mongoose.connection.on(‘error’,()=>{
console.log(‘error’)
})
mongoose.connection.on(‘disconnected’,()=>{
console.log(‘断开连接’)
})
var schema=new mongoose.Schema({
name:{type:String,require:true},
age:{type:Number,require:true}
})
var person=new mongoose.model(‘users’,schema)
// person.create({name:‘张三’,age:18},()=>{
// console.log(‘success’)
// mongoose.disconnect()
// })
// person.update({name:‘张三’},{$set:{name:‘李四’}},()=>{
// console.log(‘success’)
// mongoose.disconnect()
// })
// person.remove({name:‘李四’},()=>{
// console.log(‘success’)
// mongoose.disconnect()
// })
person.find({},(err,data)=>{
console.log(data)
mongoose.disconnect()
})
Schema 它是一种以文件形式存储的数据库模型骨架,不具备对数据库操作的能力,仅仅只是数据库在程序片段中的一种表现,可以理解为表结构.
可视化工具
可以安装Robo 3T