滴水恩情 发表于 2024-11-29 22:23:48

MongoDB 基础语法【增删改查】

前言

作为软件测试工程师,我们常用的是查询操作以下是我工作中处理处罚的一些题目,非基础教程分享,是工作履历分享。mongodb中查询用的也是比较多,用法也比较多,但此次查询不做深入的讲解,底下有截图查询的常用语法,后续会出一篇完整的讲解,需要资料的小伙伴也可以私信我。
1、mongodb集合插入数据:insertMany 与 insertOne
题目:统计列表由于每天只能天生一条数据,每页的数据是十条,为了上线前验证前端界面分页查询及展示。需要通过sql进行造数据。
db.lucky_gift_statistics.insertMany([
{
    "date": "2024-02-15",
    "loseCoin": NumberLong("1260"),
    "theNumberOfPeople": NumberLong("3"),
    "theNumberOfVisitors": NumberLong("11"),
    "winCoin": NumberLong("1980"),
    "poolValueBalance": NumberLong("3325"),
    "winLoseCoin": NumberLong("720")
},
{
    "date": "2024-02-16",
    "loseCoin": NumberLong("1340"),
    "theNumberOfPeople": NumberLong("4"),
    "theNumberOfVisitors": NumberLong("12"),
    "winCoin": NumberLong("2020"),
    "poolValueBalance": NumberLong("3425"),
    "winLoseCoin": NumberLong("680")
},
{
    "date": "2024-02-17",
    "loseCoin": NumberLong("1500"),
    "theNumberOfPeople": NumberLong("5"),
    "theNumberOfVisitors": NumberLong("15"),
    "winCoin": NumberLong("2100"),
    "poolValueBalance": NumberLong("3500"),
    "winLoseCoin": NumberLong("600")
},
{
    "date": "2024-02-18",
    "loseCoin": NumberLong("1700"),
    "theNumberOfPeople": NumberLong("6"),
    "theNumberOfVisitors": NumberLong("16"),
    "winCoin": NumberLong("2200"),
    "poolValueBalance": NumberLong("3650"),
    "winLoseCoin": NumberLong("500")
},
{
    "date": "2024-02-19",
    "loseCoin": NumberLong("1800"),
    "theNumberOfPeople": NumberLong("7"),
    "theNumberOfVisitors": NumberLong("18"),
    "winCoin": NumberLong("2400"),
    "poolValueBalance": NumberLong("3800"),
    "winLoseCoin": NumberLong("600")
}
]);
讲解 
该语句的作用是将 5 条记录批量插入到 MongoDB 的 lucky_gift_statistics 集合中。
db.lucky_gift_statistics.insertMany({...})



[*]db:表示 MongoDB 数据库实例。
[*]lucky_gift_statistics:集合名称,表示要将数据插入到该集合中。
[*]insertMany: 用于批量插入,性能高效,得当一次插入多条数据,但在批量插入失败时大概需要处理处罚回滚题目。
[*]insertOne: 只插入一条数据,适用于简朴插入操作,得当不需要批量插入的场景。

2、mongodb集合删除数据:insertMany 与 insertOne
题目:需求测试过程中由于bug等各种原因会产生一些脏数据,为了解决报错等信息我们需求手动进行删除对应的脏数据。先查询报错信息然后确定题目。
db.lucky_gift_statistics.deleteMany({
_id: {
    $in: [
      ObjectId("66f3d84d9b06489828bc8e43"),
                ObjectId("66f3d84d9b06489828bc8e42")
    ]
}
});  该语句的作用是批量删除 lucky_gift_statistics 集合中指定id的数据。


[*]db:表示 MongoDB 数据库实例。
[*]lucky_gift_statistics:目标集合名称,表示从这个集合中删除文档。
[*]deleteMany:这是 MongoDB 的一个方法,用来删除匹配条件的多个文档。假如没有匹配条件,所有文档都会被删除(除非指定特定条件)


[*]_id:这是 MongoDB 文档的唯一标识符(主键)。
[*]$in:这是一个查询操作符,用于指定多个大概的匹配值。在这里,$in 表示 _id 字段的值必须是数组中给出的其中之一。
[*]ObjectId(...):这是 MongoDB 中的特殊类型,用来唯一标识一个文档。在这里,两个特定的 ObjectId 被用来匹配文档。
[*]deleteMany 与 deleteOne:deleteMany 会删除所有匹配条件的文档,而 deleteOne 只会删除第一个匹配的文档。

 3、修改mongodb集合数据:updateOne与 updateMany
题目:有些功能的推送只在特定的国家进行推送,我们需要测试符合条件和不符合条件的国家地区有无收到。此时配置是读取redis火缓存的数据,redis则是从mongodb上读取对应的字段,所以我们需要修改mongodb的字段。
db.biz_config.updateOne({"key":"cps-register-reward-config"},
{$set:{"eliminateCountryCode":"IN,ID,JP"}}) 讲解 



[*] db.biz_config.updateOne():

[*]biz_config 是要操作的集合。
[*]updateOne 方法用于更新集合中第一个匹配查询条件的文档。

[*] {"key": "cps-register-reward-config"}:

[*]这是查询条件,用于在 biz_config 集合中查找 key 等于 "cps-register-reward-config" 的文档。

[*] {$set: {"eliminateCountryCode": "IN,ID,JP"}}:

[*]$set 是一个更新操作符,用来更新文档中的特定字段。
[*]这里指定将 eliminateCountryCode 字段的值更新为 "IN,ID,JP"。
[*]updateOne:只会更新第一个符合条件的文档。假如有多个文档匹配该查询条件,只有第一个文档会被更新。
[*]updateMany是用于更新所有符合查询条件的文档,而不仅仅是第一个匹配的文档。与 updateOne 相比,updateMany 会遍历所有符合条件的文档,并逐一进行更新
[*]$set:确保只更新指定的字段(在这个例子中是 eliminateCountryCode),而不影响文档中的其他字段。
[*]字段不存在时:假如文档中没有 eliminateCountryCode 字段,MongoDB 会自动创建这个字段并设置它的值为 "IN,ID,JP"。


 4、查询mongodb集合数据:find
 题目:有些数据前端界面不展示大概不方便查询出来,此时假如要排查题目可以查询查询数据库进行查看,测试历史渠道统计——新增字段3天充值率时界面没有充值人数的字段,此时界面没法判断是人数统计有误,没有统计还是运算有误等原因,数据库则有记录,此时便可以边操作边查询数据库。
db.channel_daily_statistics.find(
{"channelNo":"FacebookAds",createDate: ISODate("2023-07-20T00:00:00.000Z"),
childChannelNo:null}).sort({_id:-1})


[*]

[*]"channelNo": "FacebookAds":查找 channelNo 为 "FacebookAds" 的文档。
[*]"createDate": ISODate("2023-07-20T00:00:00.000Z"):查找 createDate 字段值为 2023 年 7 月 20 日的文档。ISODate 是 MongoDB 中的日期格式。
[*]"childChannelNo": null:查找 childChannelNo 字段值为 null 的文档,表明没有子渠道信息的记录。

[*] .sort({_id: -1}):
使用 _id 字段按降序排序(-1 表示倒序),返回结果会按照 _id 从最新到最旧分列。
[*] MongoDB 在处理处罚这些条件时,默认使用 AND 逻辑。因此,只有同时满意这三个条件的文档才会被选出。
https://i-blog.csdnimg.cn/direct/8c566935602d4e868ada658c9de931fc.png

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: MongoDB 基础语法【增删改查】