MongoDB学习02–增删改查操作

3月 16th, 2012
MongoDB的增删改查操作

  1. INSERT操作:
    1. 单条插入(可以使用js的语法);                                          
    2. 批量插入:mongodb中并没有提供批量插入的语法,但是高级语言中提供了与mongodb批量插入的接口,也可以通过for循环来模拟;
    3. insert和save的区别:
      1. 如果不使用_id列,两个函数没有区别都是插入数据;
      2. 如果使用了_id列,insert插入_id重复的话会报错;save插入_id重复的话会调用upsert,即存在就更新,不存在就插入;
  2. FIND操作:
    1. 根据条件查询:[>, >=, <, <=, !=, =]分别对应[$gt, $gte, $lt, $lte, $ne, 无]关键字;                    
    2. 多条件查询:[and, or, in, notin]分别对应[无, $or, $in, $nin]关键字;                      
    3. 正则表达式查询;                                                       
    4. 使用$where子句查询;                                                   
    5. findOne()函数返回满足条件的第一条记录或者是null:printjson(db.user.findOne({name:”joe”}));                                 
  3. UPDATE操作:
    1. 整体更新;                                                            
    2. 局部更新,使用修改器$inc和$set来更新某一个字段;
      1. $inc:increase的缩写,即在原来值的基础上增加$inc指定的值,可以用于自增的主键;                                
      2. $set:即设置某个列的值为$set指定的值;                                         
    3. upsert操作:update操作的第一个参数是查询条件,第二个参数是要更新的值,如果设置第三个参数为true的话,就表示如果存在记录就更新,如果不存在就插入;                           
    4. multi操作:批量更新,如果update操作匹配到了多条记录,默认情况下只更新第一条,如果需要全部更新的话,需要把update操作中第四个参数设置为true;                           
  4. REMOVE操作:
    1. 根据条件删除:db.mycoll.remove(query);                                       
    2. 全部删除:db.mycoll.remove();                                                        
— insert操作;
var user={“name”:”jack”, “password”:”12345″, “age”:20, “address”:{“province”:”shanghai”, “city”:”shanghai”}, “favourite”:[“apple”, “banana”]}
db.user.insert(user);
user.name=”joe”
user.age=21
user.address={“province”:”beijing”, “city”:”beijing”}
user.favourite=[“sanguosha”, “dota”]
db.user.insert(user)
db.user.find()
— find操作;
1.查找年龄大于等于21岁的集合;
db.user.find({“age”:{$gte:21}})
2.查找年龄等于20岁的集合;
db.user.find({“age”:20})
3.查找名称为jack而且省份为shanghai的集合:name=’jack’ and province=’shanghai’;
db.user.find({“name”:”jack”, “address.province”:”shanghai”})
4.查找省份为上海或者北京的集合:province=’shanghai’ or province=’beijing’;
db.user.find({$or:[{“address.province”:”shanghai”}, {“address.province”: “beijing”}]})
5.查找省份在上海或者北京的集合:province in (‘shanghai’, ‘beijing’);
db.user.find({“address.province”:{$in:[“shanghai”, “beijing”]}})
6.查找省份不在上海的集合:province not in (‘shanghai’);
db.user.find({“address.province”:{$nin:[“shanghai”]}})
7.查找姓名以’j’开头并且以’e’结尾的集合:name like ‘j%e’;
db.user.find({“name”:/^j/, “name”:/e$/})
8.条件复杂的时候,可以使用$where子句,其实就是js的函数,查找名称为’jack’的集合:name=’jack’;
db.user.find({$where:function(){return this.name == ‘jack’}})
— update操作;
1.整体更新一条记录;
db.user.find({“name”:”jack”})
var model=db.user.findOne({“name”:”jack”})
model.age=30
db.user.update({“name”:”jack”}, model)
db.user.find({“name”:”jack”})
2.使用$inc修改器更新一个字段;
db.user.find({“name”:”jack”})
db.user.update({“name”:”jack”}, {$inc:{“age”:-5}})
db.user.find({“name”:”jack”})
3.使用$set修改器更新一个字段;
db.user.find({“name”:”jack”})
db.user.update({“name”:”jack”}, {$set:{“age”:20}})
db.user.find({“name”:”jack”})
4.upsert操作:查找到就更新,没有就插入;
db.user.find({“name”:”kobe”})
db.user.update({“name”:”kobe”}, {$set:{“age”:20}}, true)
db.user.find({“name”:”kobe”})
5.multi操作:批量更新记录;
db.user.find()
db.user.update({“age”:{$gte:20}}, {$inc:{“age”:5}}, false, true)
db.user.find()
— remove操作;
1.根据条件删除;
db.user.find()
db.user.remove({“name”:”kobe”})
db.user.find()
2.全部删除;
db.user.remove()
db.user.find()
db.user.count()
标签: ,
目前还没有任何评论.