同Mysql对比
SQL | MongoDB |
---|
database | database |
table | collection |
row | document |
column | field |
index | index |
table join | not support |
Primary Key | Primary Key |
MongoDB
基本概念
NoSQL数据库
特殊数据库:
1. admin: 从权限的角度来看,这是"root"数据库。要是将一个用户添加到这个数据库,这个用户自动继承所有数据库的权限。一些特定的服务器端命令也只能从这个数据库运行,比如列出所有的数据库或者关闭服务器。
2. local: 这个数据永远不会被复制,可以用来存储限于本地单台服务器的任意集合
3. config: 当Mongo用于分片设置时,config数据库在内部使用,用于保存分片的相关信息。
mongod: 服务器
mongo: 客户端
collection: 集合,相当于MYSQL中的table
capped collecitons: 固定大小的collection,有队列过期的设置
db.createCollection("mycoll", {capped:true, size:100000})
元数据:数据库的信息是存储在集合中
space | 描述 |
---|
dbname.system.namespaces | 所有名字空间 |
dbname.system.indexes | 所有索引 |
dbname.system.profile | 概要信息 |
dbname.system.users | 显示用户 |
dbname.local.sources | 复制对slave的服务器信息和状态 |
show dbs
db
use db
数据库操作
常用操作
1. 数据库
1. 创建 use db_name:
2. 添加数据collection: db.runoob.insert({"name":"rudi"})
3. 删除 db.dropDatabase()
4. 删除collection db.collection.drop()
2. 插入文档 db.collection_name.insert({document})
3. 查询
1. 查看当前db中的collections:show collections;
2. 查询文档 db.collection.find(query(查询条件), projection(指定返回的键))
3. 查询返回一个文档 db.collection.findOne()
4. 保存
1. 局部更新 db.col.update({"age":12},{$set:{"age":20}}},upsert, multi)
2. 文档替换 db.col.save({...})
5. 删除文档 db.col.remove({},justOne(如果为true或者1时,只删除一条))
6. $type操作符,跟mongodb类型表有关
7. Limt与Skip
1. db.COLLECTION_NAME.find().limit(NUMBER)
2. db.COLLECTION_NAME.find().limit(NUMBER).skip(NUMBER)
8. 排序 db.COLLECTION_NAME.find().sort({KEY:1}),1升序,-1降序
operation | Eg. |
---|
equal | db.col.find({“name”:”rudi”}).pretty() |
less than | db.col.find({“age”:{$lt:20}}).pretty() |
less than or equest | db.col.find({“age”:{$lte:20}}).pretty() |
large than | db.col.find({“age”:{$lt:20}}).pretty() |
not equal | db.col.find({“age”:{$ne:20}}).pretty() |
and | db.col.find({“age”:15, “name”:”rudi”).pretty() |
or | db.col.find($or:[{“age”:15},{“name”:”rudi”}).pretty() |
只更新第一条记录:
db.col.update( { "count" : { $gt : 1 } } , { $set : { "test2" : "OK"} } );
全部更新:
db.col.update( { "count" : { $gt : 3 } } , { $set : { "test2" : "OK"} },false,true );
只添加第一条:
db.col.update( { "count" : { $gt : 4 } } , { $set : { "test5" : "OK"} },true,false );
全部添加加进去:
db.col.update( { "count" : { $gt : 5 } } , { $set : { "test5" : "OK"} },true,true );
全部更新:
db.col.update( { "count" : { $gt : 15 } } , { $inc : { "count" : 1} },false,true );
只更新第一条记录:
db.col.update( { "count" : { $gt : 10 } } , { $inc : { "count" : 1} },false,false );
进阶操作
1. 索引: db.COLLECTION_NAME.ensureIndex({KEY:1}),1升序,-1降序
2. 数据聚合:类似Excel中的公式
3. 监控:
1. mongostat (命令行执行)
2. mongotop(命令行执行)
T.B.D.