MongoDB的CURD操作

插入数据
例:向 test数据库中的user 集合中插入一个文档:
use test;    -->  切换到 test 数据库
(db.user.insert {“username”:”Tom”,”age”:10} ); --> 插入数据
MongoDB的CURD操作 - jiangzunshao - 江尊少网易博客
注: _id 字段是系统自动生成的,也可以自己指定任何类型的字,但值不能重复。
删除数据 
语法: remove(条件)
例:删除 user 集合中年龄等于10的文档
db.user.remove( {“age”:10} );
注:remove只是删除掉记录,集合和索引还在。 db.drop_collection(“user”),会删除整个集合及索引,速度快。
修改数据 
语法: update(条件,数据, 是否新增, 是否修改多条)
例:修改user 集合中年龄等于10的修改为20
var u = db.user.findOne( {“age”:10} );
      u.age = 20;
      db.user.update( {“age”:10} , u) 或 db.user.save(u);
Upsert:如果没有满足查询条件的记录的话,是否新创建这条 记录
注:如果有多条记录满足{"age":10},只有第一条记录会被修改。可以 设置第四个参数为真修改所有的记录。
修改数据时容易出错的地方
如有这样的数据:
{"_id" : 1 , "username" : "abc" , "age" : 20 , "sex" : "boy" }
想要修改年龄为22岁,错误代码如下:
var u = db.user.update( {"_id" : 1}   ,  {  "age" : 22  } )
记录修改完之后变成:
{"_id" : 1 , "age" : 22 }
正确的方法:
var  u = db.user.find( {"_id":1} );  --> 取出记录
u.age = 22;         --》 在原记录基本上修改
db.user.save(u) 或  db.user.update( {"_id":1} , u)
使用修改器
$inc : 加一个数字
$set : 修改某一个字段,如果该字段不存在就增这个字段
例1 把abc的年龄加2
db.user.update( {"name":"abc"} , {"$inc" :  {"age":2} } )
例2 修改abc的电话号码为131111,如果没有这个字段就新增这个字段
db.user.update( {"name":"abc"} , {"$set" : {"tel" : "131111"} } )
修改数组
$push : 向数组中添加
$pop   : 从数组的首或尾取出数据
例1 . 向abc的好友中添加一个好友bcd。
db.user.insert({"name":"abc" , "friend" : []})
db.user.update( {"name":"abc"}  ,  {"$push" :  {"friend": "bcd"} } )
例2 : 从abc的好友中删除最后一个好友
db.user.update({"name":"abc"} ,  {"$pop" : {"friend":1} } )
例3 : 从abc的好友中删除第一个好友
db.user.update({"name":"abc"} ,  {"$pop" : {"friend": -1} } )
注意:MongoDB中修改、删除、更新都是瞬间完成的,即客户端只把命令发给服务器,但不会检查这条命令是否执行成功。
可以通过在执行完每条命令之后执行 getLastError 来检查是否成功!
MongoDB的CURD操作 - jiangzunshao - 江尊少网易博客
查询所有数据
命令: find( 查询条件 , 返回的键), 如:
db.user.find()  -->  查询user集合中所有的数据
db.user.find( {"username":"Tom"} )   --> 列出username=Tom的数据
db.user.find( {"age":20} )   -->  列出 age = 20 的数据
MongoDB的CURD操作 - jiangzunshao - 江尊少网易博客
查询时只返回某几个字段
db.user.find({}, {"age":1})  --> 列出所有人的 age 字段
MongoDB的CURD操作 - jiangzunshao - 江尊少网易博客
db.user.find({} , {"age": 0} )  -->  除了age字段,其他字段都列出来
MongoDB的CURD操作 - jiangzunshao - 江尊少网易博客
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值