欢迎关注【无量测试之道】公众号,回复【领取资源】,
Python编程学习资源干货、
Python+Appium框架APP的UI自动化、
Python+Selenium框架Web的UI自动化、
Python+Unittest框架API自动化、
资源和代码 免费送啦~
文章下方有公众号二维码,可直接微信扫一扫关注即可。
1、常规命令使用
首先我们来了解几个概念,虽然MongoDB入门实操《上篇》这篇文章已经提到过,这里再次加深印象:
集合:Mongo 中的集合就是mysql 的表的表现形式
文档:文档的数据结构和JSON 基本一样,它就是集合(表)中的一条记录,相当于mysql 的行row
字段:Mongo 中的field 相当于mysql 中的column
索引:Mongo 中的index 与mysql 的index 一样
主键:Mongo 中的primary key 与mysql 的一样,其中Mongo 中将_id 自动设置为主键
2、向集合中插入数据
有两种方式,注意一下插入的数据格式 insert and save,如下:
> db.test.insert({"name":"tony","age":23,"job":"tester"}) WriteResult({ "nInserted" : 1 }) > db.test.save({"name":"tom","age":29,"job":"developer"}) WriteResult({ "nInserted" : 1 }) > db.test.find() { "_id" : ObjectId("5eecc55ec2e3725b5715931b"), "name" : "tony", "age" : 23, "job" : "tester" } { "_id" : ObjectId("5eecc5a3c2e3725b5715931c"), "name" : "tom", "age" : 29, "job" : "developer" }
3、删除集合中的数据
> db.test.remove({"name":"jim"}) WriteResult({ "nRemoved" : 1 })
4、修改集合中的数据
> db.test.update({"name":"tony"},{$set:{"age":30}}) #只更新第一条记录,name=tony 的age 修改为30 WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 }) > db.test.update({"name":"tony"},{$set:{"age":30}},false,true ); #满足条件的全部更新
备注:上一条命令中false and true 解释:
upsert : 可选,这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。
multi : 可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新
5、查询集合中的数据
> db.test.find({"age":{$gt:29}}) #查询age 大于29的文档 { "_id" : ObjectId("5eecc55ec2e3725b5715931b"), "name" : "tony", "age" : 33, "job" : "tester" } 备注: MongoDB中条件操作符有: * (>) 大于 - $gt * (<) 小于 - $lt * (>=) 大于等于 - $gte * (<= ) 小于等于 - $lte (大家可以多去练习) > db.test.find({"name":{$in:["tony","tom"]}}) #类似mysql 里面的in 操作查询 { "_id" : ObjectId("5eecc55ec2e3725b5715931b"), "name" : "tony", "age" : 33, "job" : "tester" } { "_id" : ObjectId("5eecc5a3c2e3725b5715931c"), "name" : "tom", "age" : 29, "job" : "developer" } > db.test.find({"name":"tom","age":29}) #这种就是mysql 里面的 name=‘tom‘ and age=29 { "_id" : ObjectId("5eecc5a3c2e3725b5715931c"), "name" : "tom", "age" : 29, "job" : "developer" } > db.test.find({$or:[{"name":"tom"},{"age":33}]}) #这种就是mysql 里面的 name=‘tom‘ or age=33 { "_id" : ObjectId("5eecc55ec2e3725b5715931b"), "name" : "tony", "age" : 33, "job" : "tester" } { "_id" : ObjectId("5eecc5a3c2e3725b5715931c"), "name" : "tom", "age" : 29, "job" : "developer" } $type操作符是基于集合中对应的数据类型,并返回结果。 > db.test.find() #这是现有的数据 { "_id" : ObjectId("5eecc55ec2e3725b5715931b"), "name" : "tony", "age" : 33, "job" : "tester" } { "_id" : ObjectId("5eecc5a3c2e3725b5715931c"), "name" : "tom", "age" : 29, "job" : "developer" } { "_id" : ObjectId("5eeccc7b613abf5d90d640a2"), "name" : "kim", "age" : 39, "job" : "developer" } { "_id" : ObjectId("5eeccd88613abf5d90d640a3"), "name" : "jim", "age" : "39", "job" : "developer" } > db.test.find({"age":{$type:"string"}}) #这里要求只查询出age 字段值是string 类型的数据 { "_id" : ObjectId("5eeccd88613abf5d90d640a3"), "name" : "jim", "age" : "39", "job" : "developer" } > db.test.find({"age":{$type:2}}) #2 和 string 是同一种表示,两种不同方式 { "_id" : ObjectId("5eeccd88613abf5d90d640a3"), "name" : "jim", "age" : "39", "job" : "developer" } > db.test.find({"age":{$type:1}}) #1 表示是数字类型,也可以用Double 来代替 { "_id" : ObjectId("5eecc55ec2e3725b5715931b"), "name" : "tony", "age" : 33, "job" : "tester" } { "_id" : ObjectId("5eecc5a3c2e3725b5715931c"), "name" : "tom", "age" : 29, "job" : "developer" } { "_id" : ObjectId("5eeccc7b613abf5d90d640a2"), "name" : "kim", "age" : 39, "job" : "developer" } limit() 方法的使用,这也相当于是mysql 里面的limit 用法,limit()方法接受一个数字参数,该参数指定从MongoDB中读取的记录条数。 > db.test.find({"age":{$type:1}}).limit(1) { "_id" : ObjectId("5eecc55ec2e3725b5715931b"), "name" : "tony", "age" : 33, "job" : "tester" } skip()方法可以用来跳过指定数量的数据,skip方法同样接受一个数字参数作为跳过的记录条数。 > db.test.find({"age":{$type:1}}).skip(1) #跳过第一条记录数据,默认情况下skip() 参数为0 { "_id" : ObjectId("5eecc5a3c2e3725b5715931c"), "name" : "tom", "age" : 29, "job" : "developer" } { "_id" : ObjectId("5eeccc7b613abf5d90d640a2"), "name" : "kim", "age" : 39, "job" : "developer" } limit() 与 skip() 方法联合使用: > db.test.find({"age":{$gt:29}}).skip(1).limit(3) { "_id" : ObjectId("5eeccc7b613abf5d90d640a2"), "name" : "kim", "age" : 39, "job" : "developer" } { "_id" : ObjectId("5ef74025613abf5d90d640a4"), "name" : "jeffy", "age" : 40, "job" : "developer" } { "_id" : ObjectId("5ef74035613abf5d90d640a5"), "name" : "jeee", "age" : 35, "job" : "developer" } 上面这条命令的操作相当于mysql 的 select * from test where age>29 limit 1,3;
总结:今天主要分享了MongoDB 中常见的操作增、删、改和查操作,这将有利于我们快速的进入到MongoDB 的世界中去。
备注:我的个人公众号已正式开通,致力于测试技术的分享,包含:大数据测试、功能测试,测试开发,API接口自动化、测试运维、UI自动化测试等,微信搜索公众号:“无量测试之道”,或扫描下方二维码:
添加关注,一起共同成长吧。