一、目标
创建集合(即sql的表),删除集合,插入数据,
二、环境
windows 7 64bit ,
数据库安装文件:mongodb-win32-x86_64-2008plus-ssl-4.0.6-signed.msi,
GUI可视化管理工具:MongoChef5.0.1(studio 3T for mongoDB)
三、启动mongoDB服务。
1.用windows的cmd工具进入mongoDB的安装目录下的bin目录,
2.执行mongode.exe --dbpath ""D:\ProgramFiles\mangoDB\data\db" 回车。
db文件夹是我们之前创建数据库前自定义存放数据库的目录。
四、创建MongoDB集合
1.进入MongoDB命令行。(用windows的cmd工具进入mongoDB的安装目录下的bin目录,执行命令mongo.exe回车)
2.创建集合
2.1 创建数据库
首先先进入到我们的目标数据库use mydb回车。(mydb是我们上个博客说的创建数据库叫mydb)
如果use的数据库存在,就用存在的数据库,如果数据库是不存在的,则自动创建该数据库
2.2.1比如创建一个集合叫xClass(即我们通常sql中的表叫xClass),敲命令db.createCollection("xClass")回车。注意Collection的C是大写。
2.22 第二种创建集合的方法,命令行
db.xClass.insert({id:1, className:"jisuanji", teacher:"kahn"}) 回车。
意为,如果xClass集合不存在,就直接创建集合,并且插入一条数据进去。
2.3 查看集合
2.3.1 可以使用命令show collections。全小写。
2.3.2 可以使用GUI工具看创建的MongoDB集合。
五、删除集合
1.先进入数据库use mydb
2.db.集合名.drop() 。 比如我们删除掉xClass集合。那就执行命令db.xClass.drop()回车执行即可。
六、插入数据
1.先进入数据库use mydb
2.命令行下执行,如db.student.insert({name:"张三", age:19, gender:1, address:"广州", isDelete:0}) 回车。
意为,在student集合下插入一条数据进去,
语法:db.集合名.insert({键值对,键值对,.....})
3.命令行下一次插入多条数据。如下:
db.student.insert([{name:"张三", age:19, gender:1, address:"广州", isDelete:0}, {name:"李四", age:20, gender:1, address:"天津", isDelete:0}, {name:"子欣", age:22, gender:1, address:"南开", isDelete:0}])
如法:db.集合名.insert([{a键值对1,a键值对2,.....}, {b键值对1,b键值对2,.....} ])
3.查看刚才插入的数据。
七、插入或修改数据
还有一种save()方法,即可以更改数据,也可以插入数据。
db.student.save()
情况1:如果如果没有指定ID,则是插入新数据。
db.student.save({ name:"徐子欣", age:18, gender:1, address:"天津南开区", isDelete:0}) 回车执行。
情况2:如果指定了ID值,则是修改数据。
语法:db.集合名.save({_id:ObjectId("艾迪值"), 键值对1,键值对2.......})
db.student.save({_id:ObjectId("5c89ecd012c1bcb23ed4e906"), name:"徐子欣", age:18, gender:1, address:"南开区", isDelete:0}) 回车执行。不可思意。不可思议吧。
八、更新数据
1.语法:db.集合名.update({条件键:条件值}, {$set:{更新键:更新值}})
如:db.student.update({name:"徐子欣"}, {$set:{age:19}})
意为:将student集合中的,name叫徐子欣的人的年龄age更新成19.
2.语法:db.集合名.update({条件键:条件值}, {$inc:{更新键:更新值}})
如:db.student.update({name:"徐子欣"}, {$inc:{age:20}})
意为:将徐子欣的年龄age值在上次19的基础上加上本次写的20,结就是年龄39
九、删除文档
即在sql中删除行数据。
1.语法:db.集合名.remove({条件键: 条件值})
例如: db.student.remove({name: "徐子欣5"})
意为:删除一个叫徐子欣5的人,从集合student中。
友情提示:不管是删除,还是增加、修改、更新、一定要在当前数据库下操作。use 数据库名
2.语法:db.集合名.remove({条件键: 条件值}, {justOne:true})
如果要删除的东西有好多个,那么加上justOne:true,则只会删除第一个。
十、查询
1.查询所有
语法: db.集合名.find() ,如果数据量大的话,慎用,你懂的。
例如:db.student.find()
2.查询指定列
语法:db.集合名.find({条件键:条件值}, {显示键1:显示值1, 显示键2:显示值2, .....})
例如:db.student.find({gender:1}, {name:1, age:1})
意为:从student集合中查找性别等于1的,结果只显示名字age和年龄age
例子2:
例子3:
3.查询所有并且不带条件
语法:db.集合名.find({}, {显示键1:显示值1, 显示键2:显示值2, .....})
例如:db.student.find({}, {name:1, age:1})
4.查询所有文档,以JSON格式显示
语法:db.集合名.find().pretty()
例如:db.student.find().pretty()
5.查询一条数据。
语法:db.集合名.findOne()
还可以加条件:db.集合名.findOne({条件键: 条件值})
十一、查询条件操作符
1.大于 $gt 语法:db.<集合名>.find({
2.大于等于 $gte
3.小于 $lt
4.小于等于 $lte
5.等于 : 语法:db.<集合名>.find({
6.大于等于and小于等于 $gte $lte 语法:db.<集合名>.find({
7.使用ID值查询 语法:db.<集合名>.find({"_id":ObjectId("id值")})
8.查看查询结果的条数 语法:db.<集合名>.find(条件).count()
9.查看某个字段值是否包含另一个字符。 语法:看下面例子6
10.查看以某字符开头的值。 语法:看下面例子7
11.截取几条数据 相当于sql的,select top(3)* from student ,看例子10
例子1:查询年龄大于30的所有人
db.student.find({age: {$gt:30}})
例子2:查询年龄大于等于38的人
db.student.find({age: {$gte:38}})
例子3:查询年龄大于等于3,并且小于等于5的人
db.student.find({age: {$gte:3, $lte:5}})
例子4:利用ID值进行查询。
db.student.find({"_id":ObjectId("5c89ecd012c1bcb23ed4e906")})
例子5:查询结果的条目数
db.student.find().count()
例子6:查看某个字段中是否包含某字符
db.student.find({name:/徐/})
查看集合中是否有包含名字有“徐”的值。
例子7:
db.student.find({name:/^t/})
查询集合student中,是否有以字母t开头的数据。
例子8:条件AND
db.student.find({age:{$gt:30}, name:/徐/}) 从student集合中查找年龄大于30的,并且名字name包含“徐”这个字的人
db.student.find({age:{$gt:20}, name:/徐/}) 从student集合中查找年龄大于20的,并且名字name包含“徐”这个字的人
例子9 条件OR
db.student.find({$or:[{age:18}, {age:{$lt:5}}]})
意为:从student集合中查找,年龄等于18岁,或者年龄小于5岁的人。
例子10: 查询指定值条数的数据
db.student.find().limit(3) 查询3条数据。
db.student.find().limit(5) 越过指定值的数据。
例子11: 类似分页功能,越过几条,查几条?
db.student.find().skip(2).limit(3) 意为:越过2条数据,再查3条数据
测试OK
2019年3月14日16:50:50
例子14: 升序、降序排列
语法:db.<集合名>.find().sort({
例如:db.student.find().sort({age:1}) ,在student集合中,用age升序的方式显示所有数据。
例如:db.student.find().sort({age:-1}) ,在student集合中,用age降序的方式显示所有数据。