• 【Mongodb教程 第十八课 】MongoDB常用命令 数据库命令 集合操作命令


    面向文档的 NoSQL 数据库主要解决的问题不是高性能的并发读写,而是保证海量数据存储的同时,具有良好的查询性能。 

    条件操作符 

    <, <=, >, >=  这个操作符就不用多解释了,最常用也是最简单的 
    db.collection.find({ "field" : { $gt: value } } );    //  大于:    field > value 
    db.collection.find({ "field" : { $lt: value } } );    //  小于:     field < value 
    db.collection.find({ "field" : { $gte: value } } );  //  大于等于: field >= value 
    db.collection.find({ "field" : { $lte: value } } );  //  小于等于: field <= value 
     
    如果要同时满足多个条件,可以这样做 

    db.collection.find({ "field" : { $gt: value1, $lt: value2 } } );    // value1 < field < value

    $all 匹配所有

    这个操作符跟SQL语法的in类似,但不同的是, in只需满足( )内的某一个值即可,  而$all必

    须满足[ ]内的所有值,例如: 
    db.users.find({age : {$all : [6, 8]}});  
    可以查询出  {name: 'David', age: 26, age: [ 6, 8, 9 ] }  
    但查询不出  {name: 'David', age: 26, age: [ 6, 7, 9 ] } 

    $exists 判断字段是否存在

    查询所有存在age字段的记录  
    db.users.find({age: {$exists: true}});  
    查询所有不存在name字段的记录  
    db.users.find({name: {$exists: false}}); 

    Null 值处理 

    > db.c2.find({age:null})   

    $mod 取模运算 

    查询age取模6等于1的数据

    db.c1.find({age: {$mod : [ 6 , 1 ] } })

    $ne 不等于

    查询x的值不等于3 的数据 
    db.c1.find( { age : { $ne : 7 } } ); 

    $in 包含 

    db.c1.find({age:{$in: [7,8]}}); 

    $nin 不包含

    查询age的值在7,8 范围外的数据  

    db.c1.find({age:{$nin: [7,8]}});

    $size 数组元素个数

    对于{name: 'David', age: 26, favorite_number: [ 6, 7, 9 ] }记录 
    匹配db.users.find({favorite_number: {$size: 3}}); 

    不匹配db.users.find({favorite_number: {$size: 2}}); 

    正则表达式匹配

    查询name 不以T开头的数据

    db.c1.find({name: {$not: /^T.*/}});  

    Javascript 查询和$Where查询

    查询a大于3的数据,下面的查询方法殊途同归 
      db.c1.find( { a : { $gt: 3 } } ); 
      db.c1.find( { $where: "this.a > 3" } ); 
      db.c1.find("this.a > 3"); 

      f = function() { return this.a > 3; } db.c1.find(f);  

    count 查询记录条数 

    db.users.find().count(); 
    以下返回的不是5,而是user 表中所有的记录数量 
    db.users.find().skip(10).limit(5).count(); 
    如果要返回限制之后的记录数量,要使用count(true)或者count(非0) 

    db.users.find().skip(10).limit(5).count(true);  

    skip限制返回记录的起点

    从第3 条记录开始,返回5 条记录(limit 3, 5) 

    db.users.find().skip(3).limit(5); 

    sort 排序 

    以年龄升序asc 

    db.users.find().sort({age: 1}); 
    以年龄降序desc 
    db.users.find().sort({age: -1});

    游标

    for( var c = db.t3.find(); c.hasNext(); ) { 

    printjson( c.next()); 
    }

    MongoDB 还有另一种方式来处理游标  

    > db.t3.find().forEach( function(u) { printjson(u); } ); 

    存储过程 

    关于存储过程你需要知道的第一件事就是它是用 javascript来写的。 

    MongoDB 存储过程是存储在db.system.js表中的,我们想象一个简单的sql自定义函数如下:

     function addNumbers( x , y ) { 

        return x + y; 
    }

    下面我们将这个sql自定义函数转换为MongoDB 的存储过程:  

    > db.system.js.save({_id:"addNumbers", value:function(x, y){ return x + y; }});  

    存储过程可以被查看,修改和删除,所以我们用 find 来查看一下是否这个存储过程已经被创建上了。  
    > db.system.js.find()                                      
    调用一下这个存储过程: 

    db.eval('addNumbers(3, 4.2)'); 

    db.eval()是一个比较奇怪的东西,我们可以将存储过程的逻辑直接在里面并同时调用,而无需事先声明存储过程的逻辑。  
    db.eval( function() { return 3+3; } ); 
  • 相关阅读:
    java 九个预定义Class对象
    Android github上开源项目、酷炫的交互动画和视觉效果地址集合
    Axure多人协作
    尺取法
    android binder 机制二(client和普通server)
    11-11前的电商
    用minGW编译ffmpeg(供替换opencv中引用的ffmpeg库)
    设计模式_状态模式
    六句代码实现对文件按时间的重命名,
    在QML应用中实现threading多任务
  • 原文地址:https://www.cnblogs.com/jthb/p/4046599.html
Copyright © 2020-2023  润新知