一、介绍
(1)mongodb是一款NOSQL(Not Only SQL)数据库(非关系型)。
(2)mongodb中的集合对应关系型数据库中的表,文档对应关系型数据库中的行数据。
(3)mongodb的文档存储的是Json格式的数据。
二、安装注意
需要在c盘根目录下创建data文件夹
三、基本操作
(1)show dbs:查看所有数据库
(2)use xxx:进入数据库xxx
(3)show collections:查看当前数据库下的所有集合
四、增操作(在插入操作时,如果集合不存在则根据集合名自动创建集合)
(1)一次插入一个文档:db.集合名.insert(文档)
db.user.insert({name:"wsh",age:22})
_id:如果插入时不知道,则数据库自动生成的,基于时间和机器码生成,能保证不重复,调用ObjectId()方法可以生成。
(2)一次插入多个文档:db.集合名.insert([文档1,文档2])
db.user.insert([{name:"lxm",age:22}, {name:"tqs", age:22}])
五、查操作
(1)无条件查询:ds.集合名.find()
db.user.find()
(2)有条件查询:ds.集合名.find(条件)
db.user.find({name:"lxm"})
(3)查询符合条件的第一个文档:ds.集合名.findOne(条件)、ds.集合名.find(条件)[0]
db.user.findOne()
db.user.find()[0]
(4)查询符合条件的文档数量:db.集合名.find(条件).count()
db.user.find().count()
六、改操作
(1)更新文档(原文档被整个替换):ds.集合名.update(条件,Json格式数据)
db.user.update({name:"wsh"}, {age:2000})
该update操作会更新整个文档为传入的Json格式的串
(2)更新文档中的部分属性:ds.集合名.update(条件,{$set:{属性1,属性2}})
db.user.update({age:2000}, {$set:{name:"wsh", age:22}})
(3)删除文档中的部分属性:ds.集合名.update(条件,{$set:{属性1,属性2}})
db.user.update({name:"wsh"}, {$unset:{name:1, age:1}})
(4)update默认修改符合条件的第一个文档。
db.user.update({age:22}, {$set:{name:"xxx"}})
(5)修改符合条件的所有文档:db.集合名.updateMany(条件,{$set:{属性1,属性2}})、db.集合名.update(条件,{$set:{属性1,属性2}},{multi:true})
db.user.updateMany({age:22}, {$set:{name:"abc"}})
db.user.update({age:22}, {$set:{name:"cba"}},{multi:true})
(6)修改符合条件的第一个文档:ds.集合名.updateOne(条件,{$set:{属性1,属性2}})
db.user.updateOne({age:22}, {$set:{name:"abc"}})
七、删操作
(1)删除符合条件的所有文档:db.集合名.remove(条件)、db.集合名.deleteMany(条件)
db.user.remove({age:22})
db.user.deleteMany({age:22})
(2)删除符合条件的第一个文档:db.集合名.deleteOne(条件)、db.集合名.remove(条件,true)
db.user.deleteOne({age:22})
db.user.remove({age:22}, true)
八、删集合
db.user.drop()
九、删数据库
db.dropDatabase()
十、嵌套条件查询
(1)文档的属性为文档
(2)db.user.find({“address.live”:“a”})
十一、往数组属性加入新元素
(1)db.user.update({name:"wsh"}, {$push:{"address.live":"c"}})
(2)如果元素在数组存在,则不添加:db.user.update({name:"wsh"}, {$addToSet:{"address.live":"c"}})
十二、大于、小于等条件
十三、查询前几条文档
十四、与、或条件
条件放在数组里
十五、排序
(1)查出来的文档,默认按照_id升序的规则排序
(2)升序:db.集合名.find(条件).sort({属性名:1})
(2)降序:db.集合名.find(条件).sort({属性名:-1})
(3)先按照年龄降序排序,年龄相同则按照姓名降序排序
十六、设置输出的属性