深入学习mongodb之增删改查

mongodb的增删改查

插入文档:
mongodb的数据以bson的格式存储,其可以看成一个文档,
db.getCollection('test').insert({
    "name" : "bingo",
    "age" : NumberLong(19),
    "major" : "computer",
    "address" : "上海"
})
另外db.getCollection('test').save()也可以存储,如果没有指定_id则inser和save是一样的,如果指定了_id则save执行的是更新操作;

删除文档:
db.collection.remove(<query>)
例如
db.collection.remove(name:"bingo")
现在官方推荐了两种新的删除方法
db.inventory.deleteMany({ status : "A" })
db.inventory.deleteOne( { status: "D" } )
分别是删除多个和删除一个;

更改文档

基本语法db.collection.update()
一个例子:
db.getCollection('test').update({name:'张三'},{$set:{age:NumberLong('12')}})此语句翻译成sql是
update test set age = 12 where name = '张三'  
注意,mongodb的这条语句只会更新查询到的第一条记录,如果想更新多条记录则添加参数
db.getCollection('test').update({name:'张三'},{$set:{age:NumberLong('12')}},{multi:true});

另外db.getCollection('test').update({name:'张三'},{$set:{age:NumberLong('12')}},{upsert :true});
表示如果不存在要更新的记录,则添加一条
有一种写法
db.getCollection('test').update({name:'张三'},{$set:{age:NumberLong('18'),address:"纽约"}},true,true)
表示如果不存在则添加一条记录,如果存在多条则更新全部;

查询操作:
基础查询:
db.collection.find(query, projection)
参数说明
query:查询条件,如果没有则查询全部,
projection:返回值映射;
db.getCollection('test').find({})
db.getCollection('test').find({name:"张三"})
与where条件对比
操作     格式     范例     RDBMS中的类似语句
等于     {<key>:<value>}     db.col.find({"name":"张三"}).pretty()     where name= '张三'
小于     {<key>:{$lt:<value>}}     db.col.find({"age":{$lt:50}}).pretty()     where age < 50
小于或等于     {<key>:{$lte:<value>}}     db.col.find({"age":{$lte:50}}).pretty()     where age <= 50
大于     {<key>:{$gt:<value>}}     db.col.find({"age":{$gt:50}}).pretty()     where age > 50
大于或等于     {<key>:{$gte:<value>}}     db.col.find({"age":{$gte:50}}).pretty()     where age >= 50
不等于     {<key>:{$ne:<value>}}     db.col.find({"age":{$ne:50}}).pretty()     where age != 50
等于     {<key>:{$eq:<value>}}     db.col.find({"age":{$eq:50}}).pretty()     where age == 50


mongodb的and 条件
>db.col.find({key1:value1, key2:value2}).pretty()
pretty()表示格式化查询结果,
mongodb的and和or
db.col.find({"age": {$gt:50}, $or: [{"name": "张三"},{"address": "上海"}]}).pretty()

projection的格式
db.collection.find(query, {name: 1, address: 1}) // inclusion模式 指定返回的键,不返回其他键
db.collection.find(query, {name: 0, address: 0}) // exclusion模式 指定不返回的键,返回其他键
只能全是0或者全是1 , 不能一个0一个1 的情况
若不想指定query,但需要指定projection则使用querydb.collection.find({}, {title: 1})


limit()与skip()
db.getCollection('test').find().limit(1).skip(1)
查询指定数量的数据
排序:
db.COLLECTION_NAME.find().sort({KEY:1})注意数据类型不同的数据之间是不能比较的,意思是说如果age字段的值有string和int64则他们之间是不能排序的;


实现like:
db.getCollection("test").find({
    name:/张/
})
相当于 like "%张%"
db.getCollection("test").find({
    name:/^张/
})

相当于 like "张%"

distinct 查询
db.getCollection("test").distinct("name")


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值