04-MongoDB数据操作(增删改查)
插入
插入文档时,如果不指定_id参数,MongoDB会为文档分配一个唯一的ObjectId
语法: db.集合名词.insert(document)
> db.stu.insert({name :"EricChen",age : 23})
WriteResult({ "nInserted" : 1 })
> db.stu.find()
{ "_id" : ObjectId("5a98f8ddf4a43a13865dc78b"), "name" : "EricChen", "age" : 23 }
也可以使用_id插入
> s1 = {_id :'20160101',name:"Jack"}
{ "_id" : "20160101", "name" : "Jack" }
> s1.gender = 0
0
> db.stu.insert(s1)
WriteResult({ "nInserted" : 1 })
> db.stu.find()
{ "_id" : ObjectId("5a98f8ddf4a43a13865dc78b"), "name" : "EricChen", "age" : 23 }
{ "_id" : "20160101", "name" : "Jack", "gender" : 0 }
更新
语法:
> db.集合名.update(
<query>,
<update>,
{multi:<boolean>}
)
- 参数query:查询条件,类似于sql语句update中的where部分
- 参数update:更新操作符,类似sql语句update中set部分
- 参数multi:可选,默认是false,标识值更新找到的第一条记录,值为true表示吧满足条件的文档全部更新
看一个例子:
> db.stu.find()
{ "_id" : ObjectId("5a98f8ddf4a43a13865dc78b"), "name" : "EricChen", "age" : 23 }
{ "_id" : "20160101", "name" : "Jack", "gender" : 0 }
//修改_id为20160101的文档
> db.stu.update({_id :"20160101"},{name :"JackMa"})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.stu.find()
{ "_id" : ObjectId("5a98f8ddf4a43a13865dc78b"), "name" : "EricChen", "age" : 23 }
{ "_id" : "20160101", "name" : "JackMa" }
修改指定的属性:
> db.stu.update({name : "Rose"} ,{$set : {name : "Rps"}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.stu.find()
{ "_id" : ObjectId("5a98f8ddf4a43a13865dc78b"), "name" : "Rps" }
{ "_id" : "20160101", "name" : "JackMa" }
{ "_id" : ObjectId("5a98fd85f4a43a13865dc78c"), "name" : "hr", "gender" : 0 }
修改多条匹配到的数据:
> db.stu.find()
{ "_id" : ObjectId("5a98f8ddf4a43a13865dc78b"), "name" : "Rps" }
{ "_id" : "20160101", "name" : "JackMa" }
{ "_id" : ObjectId("5a98fd85f4a43a13865dc78c"), "name" : "hr", "gender" : 0 }
> db.stu.update({},{$set:{gender:0}},{multi : true})
WriteResult({ "nMatched" : 3, "nUpserted" : 0, "nModified" : 2 })
> db.stu.find()
{ "_id" : ObjectId("5a98f8ddf4a43a13865dc78b"), "name" : "Rps", "gender" : 0 }
{ "_id" : "20160101", "name" : "JackMa", "gender" : 0 }
{ "_id" : ObjectId("5a98fd85f4a43a13865dc78c"), "name" : "hr", "gender" : 0 }
保存
如果文档的id已经存在则修改,如果文档的id不存在则添加
db.stu.save({_id: '20160101','name':'wyk'})
删除
db.stu.remove(
<query>,
{
justOne:<boolean>
}
)
- 参数query:可选,删除的文档的条件
参数justOne:可选,如果设为true或1.则值删除一条,默认false,标识删除多条
db.stu.remove({gender :0},{justOne:true})
全部删除
db.stu.remove({})
创建集合
创建一个集合,size属性标识归并集合的最大限制,当数据量很大的时候,覆盖掉旧数据:
创建一个大小为5的集合
db.createCollection('sub',{capped:true,size : 5})