插入数据
例:向 test数据库中的user 集合中插入一个文档:
use test; --> 切换到 test 数据库
(db.user.insert {“username”:”Tom”,”age”:10} ); --> 插入数据
注: _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 来检查是否成功!
查询所有数据
命令: find( 查询条件 , 返回的键), 如:
db.user.find() --> 查询user集合中所有的数据
db.user.find( {"username":"Tom"} ) --> 列出username=Tom的数据
db.user.find( {"age":20} ) --> 列出 age = 20 的数据
查询时只返回某几个字段
db.user.find({}, {"age":1}) --> 列出所有人的 age 字段
db.user.find({} , {"age": 0} ) --> 除了age字段,其他字段都列出来