mongodb笔记增删改查索引

本文详细介绍MongoDB中的数据操作方法,包括插入、查询、更新及删除等核心操作,并演示了索引的创建与应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

db.persons.find()
db.persons.insert({_id:"001",name:"kkk"})
db.persons.drop()
//批量插入
for(var i=1;i<11;i++){
db.persons.insert({name:"aa"+i})
}

db.persons.insert({_id:"001",name:"10"})
//save的话如果有相同的记录则会更新
db.persons.save({_id:"001",name:"11"})

//查看索引
show collections
//删除所有
db.persons.remove({})
db.persons.remove({_id:"001"})

//强制更新
> db.persons.find()
{ "_id" : "002", "name" : "2" }
> db.persons.update({_id:"002"},{name:123})
> db.persons.find()
{ "_id" : "002", "name" : 123 }

//第三个参数表示更新或者插入
db.persons.update({_id:"003"},{name:123},true)

> db.persons.find()
{ "_id" : "002", "name" : 123 }
{ "_id" : "003", "name" : 123 }

//4四个参数表示批量更新
> db.persons.update({name:123},{$set:{name:11}},false,true)
> db.persons.find()
{ "_id" : "002", "name" : 11 }
{ "_id" : "003", "name" : 11 }

> db.persons.find()
{ "_id" : "002", "name" : 11 }
> db.persons.update({_id:"002"},{$set:{age:13}})
> db.persons.find()
{ "_id" : "002", "name" : 11, "age" : 13 }

//inc正数表示加几负数表示减几
{ "_id" : "002", "name" : 11, "age" : 13 }
> db.persons.update({_id:"002"},{$inc:{age:2}})
> db.persons.find()
{ "_id" : "002", "name" : 11, "age" : 15 }

//删除属性
> db.persons.find()
{ "_id" : "003", "name" : 11 }
> db.persons.update({_id:"003"},{$unset:{name:1}})
> db.persons.find()
{ "_id" : "003" }

//往数组里面存记录,如果数组不存在则建立数组
> db.persons.update({_id:"003"},{$push:{books:"js"}})
> db.persons.find()
{ "_id" : "003", "books" : [ "js" ] }
> db.persons.update({_id:"003"},{$push:{books:"java"}})
> db.persons.find()
{ "_id" : "003", "books" : [ "js", "java" ] }

//往数组批量插入数据
> db.persons.update({_id:"003"},{$pushAll:{books:["aa","bb"]}})
> db.persons.find()
{ "_id" : "003", "books" : [ "js", "java", "aa", "bb" ] }

//数组中删除数据
> db.persons.update({_id:"003"},{$pop:{books:-1}})
> db.persons.find()
{ "_id" : "003", "books" : [ "java", "aa", "bb" ] }
> db.persons.update({_id:"003"},{$pop:{books:1}})
> db.persons.find()
{ "_id" : "003", "books" : [ "java", "aa" ] }

//数组中批量删除数据
> db.persons.find()
{ "_id" : "003", "books" : [ "java", "aa", "cc", "dd", "ee" ] }
> db.persons.update({_id:"003"},{$pull:{books:"aa"}})
> db.persons.find()
{ "_id" : "003", "books" : [ "java", "cc", "dd", "ee" ] }
> db.persons.update({_id:"003"},{$pullAll:{books:["cc","ee"]}})
> db.persons.find()
{ "_id" : "003", "books" : [ "java", "dd" ] }

//批量添加,有重复的就去重
> db.persons.find()
{ "_id" : "003", "books" : [ "java", "dd" ] }
> db.persons.update({_id:"003"},{$addToSet:{books:{$each:["java","aa"]}}})
> db.persons.find()
{ "_id" : "003", "books" : [ "java", "dd", "aa" ] }


/********************************查 询************************************/
//默认显示id,所以id:0让他不显示
db.persons.find({},{_id:0,name:1,age:1,country:1})
{ "name" : "jim", "age" : 25, "country" : "USA" }
{ "name" : "tom", "age" : 25, "country" : "USA" }

//查询年龄在25~27之间的学生
> db.persons.find({age:{$gte:25,$lte:27}},{_id:0,name:1,age:1,country:1})

//查出不是韩国的学生
> db.persons.find({country:{$ne:"Korea"}},{_id:0,name:1,age:1,m:1,country:1})

//学生在中和美之中 (ps:in nin只能用于数组)
> db.persons.find({country:{$in:["USA","China"]}},{_id:0,name:1,age:1,m:1,country:1})

//学生不在中和美之中
> db.persons.find({country:{$nin:["USA","China"]}},{_id:0,name:1,age:1,m:1,country:1})

//语文成绩大于85或者外语成绩大于90
> db.persons.find({$or:[{c:{$gt:85}},{e:{$gt:90}}]},{_id:0,name:1,age:1,c:1,e:1}

> db.persons.update({country:"China"},{$set:{sex:"M"}},false,true)

> db.persons.find({sex:{$in:[null]}},{_id:0,name:1,age:1,sex:1})

//正则匹配
> db.persons.find({name:/li/i},{_id:0,name:1,age:1})

//not 可以不用于数组
> db.persons.find({name:{$not:/li/i}},{_id:0,name:1,age:1})

//喜欢JS与MONGODB的学生
> db.persons.find({books:{$all:["JS","MONGODB"]}},{_id:0,name:1,books:1})

//第二本书为JAVA的学生信息  books.1表示数组下标为1(也就是第二本书)
> db.persons.find({"books.1":"JAVA"},{_id:0,name:1,books:1})

> db.persons.find({books:{$size:4}},{_id:0,name:1,books:1})

> db.persons.update({},{$set:{size:4}},false,true)
> db.persons.update({name:"jim"},{$push:{books:"PHP"},$inc:{size:1}})

//$slice从下标1开始查,查3本
> db.persons.find({name:"jim"},{_id:0,books:{$slice:[1,3]}})

//查询最后一本书
> db.persons.find({name:"jim"},{_id:0,books:{$slice:-1}})

//这样顺序与字段全要匹配才行
> db.persons.find({school:{school:"K",score:"A"}},{_id:0,school:1})

//解决上面的问题
> db.persons.find({"school.score":"A","school.school":"K"},{_id:0,school:1})

> db.persons.find({school:{$elemMatch:{score:"A",school:"K"}}},{_id:0,school:1})

//查询前五条
> db.persons.find({},{_id:0,name:1}).limit(5)

//查询6~10条
> db.persons.find({},{_id:0,name:1}).limit(5).skip(5)

//排序-1为倒序
> db.persons.find({},{_id:0,name:1,age:1}).limit(5).sort({age:1})

/********************************索 引************************************/
for(var i = 0 ; i<20000 ;i++){
    db.books.insert({number:i,name:i+"book"})
}

var start = new Date()
db.books.find({number:9742})
var end = new Date()
end - start
//查询174毫秒

//建立索引
> db.books.ensureIndex({number:1})
//查询只要19毫秒

//建立指定名称的索引
> db.books.ensureIndex({number:1},{name:"bookNumber"})

//唯一索引
> db.books.ensureIndex({name:1},{unique:true})

//先去重再建立唯一索引
> db.books.ensureIndex({name:1},{unique:true,dropDups:true})

//如何强制查询使用指定的索引
> db.books.find({"name":"obook"}).hint({"name":1})

//索引的创建过程在后台执行
db.books.ensureIndex({"name":"0book"},{bookground:true})


//查看索引
> db.books.getIndexes()
//删除索引
> db.runCommand({dropIndexes:"books",index:"name_1"})
//所有都删除
> db.runCommand({dropIndexes:"books",index:"*"})
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值