mongodb与mysql
mysql mongodb
database database
table collection
row document (json=>bson>
column field
join 不支持
primar key primary key (_id)
mongodb常用命令
//创建数据库 选择数据库 zzz
use zzz;
//查看库中的表
show tables;
show collections;
//创建表
db.createCollection("zzz");
//查看当前数据库
db
//插入一条数据
//{"title":"aa", "content":"bb", "name":"cc", "userid":"0001", "nick":"kk"}
db.zzz.insert({"title":"aa", "content":"bb", "name":"cc", "userid":"0001", "nick":"kk"})
//查询表中的所有数据
db.zzz.find();
//查看表的数据量
db.zzz.count();
//删除表
db.zzz.drop();
//删库
db.dropDatabase();
//插入多条数据
try{
db.zzz.insertMany(
[
{"_id":"1", "title":"aa", "content":"good", "readNum":21, "name":"a1", "userid":"0001", "nick":"gree"},
{"_id":"2", "title":"bb", "content":"hi", "readNum":28, "name":"b1", "userid":"0002", "nick":"ant"},
{"_id":"3", "title":"cc", "content":"ok", "readNum":27, "name":"c1", "userid":"0003", "nick":"plan"},
{"_id":"4", "title":"dd", "content":"no", "readNum":29, "name":"a1", "userid":"0001", "nick":"gree"},
{"_id":"5", "title":"ee", "content":"yes","readNum":22, "name":"e1", "userid":"0004", "nick":"dog"}
]
)
}catch(e){
print(e)
}
//带条件查询 查询一条数据
db.zzz.findOne({"name":"a1"})
//查询多条数据
db.zzz.find({"name":"a1"})
//多条件查询 结果显示titLe列
db.zzz.find({name:"a1",content:"no"},{title:1})
//不显示_id列
db.zzz.find({name:"a1",content:"no"},{_id:0})
//查询全部,显示title content列
db.zzz.find({},{title:1,content:1})
//查询全部,显示title content ,隐藏_id列
db.zzz.find({},{title:1,content:1,_id:0})
//默认_id是主键 删除指定_id
db.zzz.remove({_id:5})
//删除指定列内容是a1
db.zzz.remove({name:"a1"})
//根据指定的条件来删除
db.zzz.remove({name:"c1",content:"ok"})
//根据条件查询出内容的数量
db.zzz.find({name:"a1"}).count()
//分页操作
//查询前两条数据
db.zzz.find().limit(2);
//跨越两条,查询第三四条数据
db.zzz.find().limit(2).skip(2);
//跨越四条,查询第五六条数据
db.zzz.find().limit(2).skip(4);
//排序
//查询结果 按阅读量升序
db.zzz.find().sort({readNum:1})
//查询结果 按阅读量降序
db.zzz.find().sort({readNum:-1})
//查询阅读量排名前三的作者的名字
db.zzz.find({},{name:1}).sort({readNum:-1}).limit(3)
//多列排序 用户id升序 阅读量降序
db.zzz.find().sort({userid:1,readNum:-1})
//查询内容包含字母o
db.zzz.find({content:/o/})
//查询内容以字母o开头
db.zzz.find({content:/^o/})
//$gt $lt $gte $lte $ne...
//阅读量大于25的信息
db.zzz.find({readNum:{$gt:25}})
//阅读量在25 到 30间的信息
db.zzz.find(readNum:{$gt:25,$lt:30})
// 作者a1的阅读量在25 到 30间的信息
db.zzz.find({name:"a1",readNum:{$gt:25,$lt:30}})
//$in $or $and
//userid为0001,0002的信息
db.zzz.find({userid:{$in:["0001","0002"]}})
//作者c1或阅读量小于25的信息
db.zzz.find({$or:[{name:"c1"},{readNum:{$lt:25}}]})
//阅读量21且小于29的信息
db.zzz.find({$and:[{readNum:{$gt:21}},{readNum:{$lt:29}}]})
修改
> db.student.update({title:"bb"},{content:"hihihi"}) // 查询到的数据全部修改
> db.students.update({title:"aa"},{$set:{content:"hihihi"}}) //局部修改
> db.students.update({name:"a1"},{$set:{nick:"black"}}) 只修改一条
> db.students.updateMany({name:"a1"},{$set:{nick:"black"}}) 修改多条 修改所有匹配到的数据
> db.students.update({name:"a1"},{$set:{nick:"tom"}},{multi:true})修改多条
WriteResult({ "nMatched" : 2, "nUpserted" : 0, "nModified" : 2 })
// 索引
> db.students.getIndexes()
[
{
"v" : 2,
"key" : {
"_id" : 1
},
"name" : "_id_",
"ns" : "kgcdsj.students"
}
]
// 创建索引
> db.students.createIndex({userid:1})
{
"createdCollectionAutomatically" : false,
"numIndexesBefore" : 1,
"numIndexesAfter" : 2,
"ok" : 1
}
> db.students.createIndex({userid:1,readNum:-1})
{
"createdCollectionAutomatically" : false,
"numIndexesBefore" : 2,
"numIndexesAfter" : 3,
"ok" : 1
}
删除索引
> db.students.dropIndex("userid_1_readNum_-1") // 索引名
> db.students.dropIndex({userid:1})
> db.students.dropIndexes() // 删除全部索引
{
"nIndexesWas" : 3,
"msg" : "non-_id indexes dropped for collection",
"ok" : 1
}