-
2.4 条件查询
-
- 2.4.1 比较运算符
-
2.4.2 范围运算符
-
2.4.3 逻辑运算符
-
2.4.4 查询示例
-
2.5对查询结果操作
-
- 2.5.1 help()
-
2.5.2pretty() 结果格式化
-
2.5.3 count() 结果计数
-
2.5.4 limit() 数量限制
-
2.5.5skip() 跳过前几个
-
2.5.6sort() 排序
-
- 升序
-
降序
-
2.6 映射
-
③修改
-
- 3.1 单个数据修改
-
- 3.1.1 修改一整条数据
-
3.1.2 修改一条数据中的某字段 $set
-
3.2 批量修改 $set {multi:true}
-
- 3.2.1 将某字段为x的数据的某字段值改为y
-
3.3 {upsert:true} 有则修改,无则插入
-
3.4$inc 增量修改
-
④删除
-
- 4.1条件删除
-
- 删除符合查询条件的所有数据
-
删除符合查询条件的第一条数据
-
4.2删除所有数据
mongodb增、删、改、查快速上手
ʚʕ̯•͡˔•̯᷅ʔɞ
🍹欢迎各路大佬来到小啾主页指点☀️
✨博客主页:云雀编程小窝 🌹꧔ꦿ
🌹꧔ꦿ点赞 + 关注 + 收藏✨
上期传送门:
首先创建一个名为test的数据库并使用之
use test
=========================================================================
-
添加一条数据使用insertOne(),添加多条数据使用insertMany()。
-
添加一条或多条数据也可以都使用insert()。(一种可能会被淘汰的方法,建议使用前者为主流的方法)
-
此外,也可以使用save来插入数据。
添加一条数据
db.collection001.insertOne({name:“张三”})
查看
db.collection001.find()
插入成功。
首先定义一个列表,里边存放着多条数据
d = [{name:“侯小啾”,age:18},{name:“Lihua”,id:‘003’}]
添加多条数据,在insertMany()中传入一个列表
db.collection001.insertMany(d)
查看之
使用insert插入一条和多条数据
db.collection001.insert({name:“Tom”,class:“5”})
db.collection001.insert([{name:“小A”,age:21},{name:“xxx”}])
查看数据,已成功插入:
db.collection001.find()
-
当使用insert系列方法插入数据时,若指定"_id",如果插入的数据的"_id"相同,则会报错,即插入失败。
-
使用save时,若指定 “_id” ,
如果"_id"不相同,则插入该数据;
如果“_id”相同,则更新该条数据。
插入一条和多条
db.collection001.save({name:“a1”})
db.collection001.save([{name:“b1”},{name:“c1”}])
插入相同id的数据,效果为修改数据
db.collection001.save({_id:ObjectId(“62353cc924f17f61f1ff3659”),name:“xxxxxxxxxxxxxxxxxxxxxxxxxx”})
db.collection001.find()
=========================================================================
首先准备一组数据,放在集合collection002中
db.collection002.insertMany([{name:“Tom”,city:“cityA”,type:“aaa”,num:609},
{name : “allen”,city : “cityC”, type : “bbb”, num : 549},
{name : “jerry”,city : “cityA”, type : “bbb”, num : 593},
{name : “frank”,city : “cityB”, type : “aaa”, num : 657},
{name : “jack”,:,city : “cityC”, type : “aaa”, num : 620},
{name : “alice”,city : “cityB”, type : “ccc”, num : 584},
{name : “marry”,city : “cityA”, type : “bbb”, num : 599}
])
db.collection002.findOne()
db.collection002.find()
- 查询city值为cityB的:
db.collection002.find({city:“cityB”})
- 查询city值为"cityA"且type值为"bbb"的数据:
db.collection002.find({city:“cityA”,type:“bbb”})
2.4.1 比较运算符
| 比较关系 | 比较运算符 | 描述 |
| — | — | — |
| 等于 | $eq | equal |
| 不等于 | $ne | not equal |
| 小于 | $lt | less than |
| 小于等于 | $lte | less than equal |
| 大于 | $gt | greater than |
| 大于等于 | $gte | greater than equal |
2.4.2 范围运算符
in表示在范围中
nin 表示不在范围中
2.4.3 逻辑运算符
and 且
or 或
2.4.4 查询示例
查询num大于600的数据
db.collection002.find({num:{$gt:600}})
查询num大于550小于600的数据
db.collection002.find({num:{ l t : 600 , lt:600, lt:600,gt:550}})
查询city为cityA的也可以这么写:
db.collection002.find({city:{$eq:“cityA”}})
查询city 在 [“cityA”,“cityC”] 中的:
db.collection002.find({city:{$in:[“cityA”,“cityC”]}})
查询city在[“cityA”,“cityC”] 且 num大于600的
db.collection002.find({KaTeX parse error: Undefined control sequence: \[ at position 5: and:\̲[̲{city:{in:[“cityA”,“cityC”]}},{num:{$gt:600}}]})
查询city在[“cityA”,“cityC”] 或 num大于600的
db.collection002.find({KaTeX parse error: Undefined control sequence: \[ at position 4: or:\̲[̲{city:{in:[“cityA”,“cityC”]}},{num:{$gt:600}}]})
2.5.1 help()
可以对查询的结果能进行的简单的二次操作如下:
2.5.2pretty() 结果格式化
如prety,可以将打印结果格式化,即清晰地展现出来如下:
db.collection002.find().pretty()
2.5.3 count() 结果计数
db.collection002.find().count()
2.5.4 limit() 数量限制
以取出前两条为例
db.collection002.find().limit(2)
2.5.5skip() 跳过前几个
以跳过前两个为例
db.collection002.find().skip(2)
db.collection002.find().skip(2).limit(1)
则可以跳过前两个后取出第一个
- 其中skip() 的优先级高于 limit(),
故写成
db.collection002.find().limit(1).skip(2)
效果也是一样的。
2.5.6sort() 排序
升序
按num字段升序排列
db.collection002.find().sort({num:1})
降序
按num字段降序排列
db.collection002.find().sort({num:-1})
关于find()的参数,第一个{ }括号内表示是筛选规则,第二个{ }括号内表示映射。
例如:
db.collection002.find({num:{$gt:550}},{name:1})
则表示取出num大于500的数据,只取name字段
效果如图所示:
其中"_id"字段是默认取出的。字段name后边写为1(只要不为0),表示取出该字段。如果写为0,则表示不取该值。
如,如果结果不想要"_id"字段:
db.collection002.find({num:{$gt:550}},{name:1,_id:0})
- 这里使用1来代表非零值(其他非零值也可以)。
还有一个重要的规则是,**对于除了_id外的其他字段,使用映射时0和1不可以共存,否则会报错。
如只有1时,则取出标记为1的字段。只有0时,则取除了这些为0的字段之外的字段。**
db.collection002.find({num:{$gt:550}},{city:0,_id:0})
=========================================================================
3.1.1 修改一整条数据
db.collection002.update({name:“Tom”},{name:“jim”})
3.1.2 修改一条数据中的某字段 $set
将name中的alice改为lucy
db.collection002.update({name:“alice”},{$set:{name:“lucy”}})
- 这种方式只能修改第一条与之匹配的数据,不能修改多条。
3.2.1 将某字段为x的数据的某字段值改为y
将此段city的值为cityA的数据,的字段city的值都改为"cityXXX"。
db.collection002.update({city:“cityA”},{$set:{city:“cityXXX”}},{multi:true})
将字段city值为cityB的数据,的字段type的值都改为ddd。
db.collection002.update({city:“cityB”},{$set:{type:“ddd”}},{multi:true})