文档的增删改查
Posted zengsf
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了文档的增删改查相关的知识,希望对你有一定的参考价值。
增加文档:
方法1:
db.collection.insert({}) 插入单个文档
db.collection.insertOne({}) 插入当个文档
db.collection.insert([{},{},{}]) 插入多个文档,参数用中括号
db.collection.insertMany([{},{}]) 也是插入多个文档
e.g.
db.class0.insert({‘name‘:"Lucy","age":18})
e.q. db.class0.insert([{name:"dfsd",age:19,sex:"w"},{name:"fdsf",age:20,sex:"m"}])
* 文档中键可以不加引号
* _id为系统自动添加主键,如果自己写也可以,但是不能重复
* _id 值可以自己插入,但是不能重复,_id就相当于主键
方法2:
db.collection.save() 也是插入文档
*如果不适用_id则save用法同insert一样
* 如果加_id项,此时文档已经存在时则会替换原有文档,如果不存在,者正常插入
删除文档:
mysql:delete from table 表名 where
mongodb:db.collection.remove(query,justOne)
remove(query,justOne)
功能:删除文档
参数:query 用法同find
justOne 布尔值 默认为false表示删除所有符合条件的文档设置文true则表示只删除一条
e.g. 删除所有不存在sex的域的文档
db.class1.remove({sex:{$exists:false}})
e.g. 删除第一条性别为w的文档
db.class1.remove({sex:"w"}, true)
db.collection.remove({}) 删除集合中所有的文档
修改文档:
mysql : update table set ... where ...
mongodb : db.collection.update(query,update,upsert,multi)
功能 : 修改文档
参数 : query 筛选要修改的文档,相当于where 用法同查找
update :将筛选的文档修改为什么内容,相当于set。 需要配合修改操作符($set)一同使用。
upsert : bool值,默认为false。如果query的文档不存在则不进行任何操作
如果设置为true则如果query的文档不存在就根据query和update插入新文档
multi : bool值,默认为false。如果query文档有多条则只修改第一条,如果设置为true 则修改所有符合条件文档
例子:
将文档中名字为zengsf的年龄设置为15
db.class.update({name:"zengsf"},{$set:{age:15}})
如果有name=Jame的文档则修改,如果没有则根据query update插入新的文档
db.class.update({name:"Jame"},{$set:{age:18}},true)
查找文档内容:
mysql : select * from table table where ...
mongodb : db.collection.find(query, field)
find(query,filed)
功能:查找文档
参数:query 查找条件,相当于where字句
field 查找的域
返回值: 查找到的所有文档
query:以键值对方式传参,如果是空{}表示查找所有内容
field:以键值对的方式给出要查找(不查找)的域,以域名为键,以0,1为值分别表示不查找和查找
db.class0.find({},{name:0}); 除名字以外,其它都查找
db.class0.find({},{name:1}); 除名字以外,其它都不查找
* 如果某一个或多个域设置为0 表示这些域不查找,其它域均查找
* 如果某一个或多个域设置为1, 表示这些域都查找,其它域均不查找
* _id除非设置为0,否则均会查找
* 除_id域以外,其它域不能有的设置1有的设置0
查找所有内容 db.collection.find()
findOne(query,field)
功能: 查找第一条符合条件的文档
参数: 同find
返回值: 返回查找到的文档
以上是关于文档的增删改查的主要内容,如果未能解决你的问题,请参考以下文章