zoukankan      html  css  js  c++  java
  • mongodb增删改查

    1)增
    db.users.insert({});
    db.users.insertMany([{},{}]);

    2)删
    删除记录
    db.users.remove({}, 0); (默认)删除全部文档
    db.users.remove({}, 1); 只删除一篇文档

    3)改
    参数说明:
    第一个参数:匹配的条件
    第二个参数:更新的内容
    第三个参数:存在更新,不存在写入?
    第四个参数:更新多个文档?

    db.users.update({}, {}, 0, 0); (默认)只更新一篇文档(效果同updateOne)
    db.users.update({}, {}, 0, 1); 更新全部匹配的文档(效果同updateMany)

    魔术变量:
    【普通字段的更新】
    $set
    修改指定字段(字段不存在则自动增加并赋值)
    db.users.update({'name':'张三'},{$set:{'age':30}});

    $inc
    字段值(字段不存在则自动增加并赋值)
    db.users.update({'name':'张三'},{$inc:{'score':10}});


    【数组字段的更新】
    $push(追加单个值)
    db.users.update({'name':'张三'}, {$push:{'article':100});
    db.users.update({'name':'张三'}, {$push:{'article':[1,2,3]}}); 追加数组

    $pushAll(追加多个值)
    db.users.update({'name':'张三'}, {$pushAll:{'article':[1,2,3]}});

    $pop(移除数组最后一个(1)或第一个值(-1))
    db.users.update({'name':'张三'}, {$pop:{'article':1}});
    db.users.update({'name':'张三'}, {$pop:{'article':-1}});

    $addToSet(追加一个不重复的值:已存在相同值则不追加)
    db.users.update({'name':'张三'}, {$addToSet:{'article':101}});
    db.users.update({'name':'张三'}, {$addToSet:{'article':{$each:[99,100,101,102,103,104,105]}}});

    $pull(移除数组中一个值)
    db.users.update({'name':'张三'}, {$pull:{'article':105}});

    $pullAll(移除数组中多个值)
    db.users.update({'name':'张三'}, {$pullAll:{'article':[98,99]}});

    $rename(更改字段名)
    db.users.update({'name':'张三'}, {$rename:{'profile':'others'}});

    4)查
    【比较运算】
    等于
    db.users.find({'age':{$eq:23}});
    不等于
    db.users.find({'age':{$ne:23}});
    大于等于
    db.users.find({'age':{$gte:23}});
    大于
    db.users.find({'age':{$gt:23}});
    小于
    db.users.find({'age':{$lt:25}});
    小于等于
    db.users.find({'age':{$lte:25}});

    db.users.find({'name':'张三', 'age':30});
    或者
    db.users.find({$or:[{'age':23},{'age':25}]});

    【范围】
    $in
    db.users.find({'age':{$in:[23,25]}});
    $nin
    db.users.find({'age':{$nin:[23,25]}});

    【数组长度】
    $size
    db.users.find({'article':{$size:7}});

    【值类型】
    $type
    db.users.find({'age':null}); 这个会查询出没有age字段的文档
    db.users.find({'age':{$type:10}}); 严格查询出字段值为null的文档

    【函数】
    $where(this代表每一条文档,不用有个别文档才有的字段做条件,会报错)
    db.users.find({$where:function(){return this.name=='李四'}})
    db.users.find(function(){return this.name=='李四'});

    $slice(在匹配的基础上对文档数组进行操作,数组截取)
    db.users.findOne({'name':'张三'},{'article':{$slice:1},'collections':{$slice:1}});


    count()
    db.users.find().count(false);
    注意:当需要limit方法和count方法一起使用时,count里参数需传true,否则忽略limit方法的影响
    db.users.find().limit(20).count(true);

    Null查询
    db.users.find({'age':{$type:10}});

    分页查询
    db.users.find().skip(20).limit(20);

    游标操作
    var result = db.users.find({'age':{$gt:23}});
    检查是否有下一个文档
    result.hasNext();
    输出下一个文档
    result.next();
    result.next();
    result.next();
    一次性输出剩下的文档
    result;


    筛选字段输入
    db.users.find({'name':'张三'}, {'age':1, 'score':1});
    默认输入里都带'_id'字段的,如果不想要'_id'字段,可以使用{'_id':0}
    db.users.find({'name':'张三'}, {'age':1, 'score':1, '_id':0});

  • 相关阅读:
    centos设置系统时间
    ubufntu 11.10启动不了nautilus的问题解决
    centos中用crontab定时执行java程序
    试用ubuntu里画流程图,架构图工具
    内嵌在客户端的网页出现刷新问题
    lenovo e23在ubuntu下打开无线网卡的办法
    mysql workbench for ubuntu测试
    有关Java多态
    我是程序猿,一个新的开始......
    有关数组的几种排序
  • 原文地址:https://www.cnblogs.com/tujia/p/5338321.html
Copyright © 2011-2022 走看看