为什么使用MongoDB/什么场景下使用它?
- 数据量大
- 写入频繁
- 价值低
对MongoDB有一个较为深刻的认识:
- c++ 编写的一个基于分布式文件存储的数据库;
- 是一个接近于关系型数据库的非关系型数据库;
- 支持的数据,结构较为松散,是类似于json的bson格式,可以存储复杂的数据类型;
- 模式*,支持动态查询,支持索引;
mongoDB的体系结构(数据库/集合/文档):
是一种,面型用户的层次结构,主要由document,collection database三部分构成
document: 类似于关系型数据库中的一行记录;
collection:由document组建成的集合,collection中存放document,类似于MYSQL中的表;
database: 数据库; MongoDB实例,支持多个数据库;
会安装 mongodb (mongod --dbpath=xxx -port=27017)
mongodb的命令:
-
选择和创建数据库
show dbs use db
注意的是 use db 并不会直接创建数据库,需要先创建集合collection,集合内存入文档,才会查询到数据库db;
-
插入和查询文档
db.collection.insert(json);
db 数据库 collection 集合 insert插入 bson,当做json使用即可;
db.collection.find(); db.collection.findOne({json条件}); db.collection.find().limit(2)
find() 查询所有;
findOne({json}):查询符合json条件的第一条数据;
find().limit(x); 查询所有的数据,前x条;
-
修改和删除文档
db.collection.uopdate({_id:"1"},{user:"lisi"}); db.collection.update({_id:"1"},{$set:{user:"lisi"}}); db.collection.remove(条件); db.collection.remove({}); 删除所有
update() 十分危险,必须附加修改器$set,不然就不是修改,而是覆盖
-
统计条数
db.collection.count(); db.collection.count(条件);
-
模糊查询
和查询一致,支持正则表达式
\^xxxx$\
-
大于,小于,不等于
json 表达 :
{"field":{$gt:value}}
大于value的字段field$gt
大于$lt
小于$gte
大于等于$lte
小于等于$ne
不等于 -
包含和不包含
$in
$nin
-
条件连接
$and
$or
且 或 -
列值增长
$inc
MongoDB数据类型
String 最常用的UTF-8合法
mongodb 的主键 _id
自增 查询写入速度很快