• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    浅谈mongodb中query查询

    Mongodb最大的功能之一就是它支持动态查询,就跟传统的关系型数据库查询一样,但是它的查询来的更灵活。

    一、  Query Expression Objects:查询表达式对象

    查询表达式文档也是一个BSON结构的文档,例如,我们可以用下面的查询语句来查询集合中的所有记录:
    db.users.find({})
    这里,表达式对象是一个空文档,在查询的时候去去匹配所有的记录。再看:

    复制代码 代码如下:

    db.users.find({'last_name': 'Smith'})

    这里,我们将会查询出所有“last_name”属性值为“Smith”的文档记录。

    二、查询选项

    除了查询表达式意外,Mongodb还支持一些额外的参数选项。例如,我们可能仅仅只想返回某些特定的字段值:

    复制代码 代码如下:

    //返回除了age字段外的所有字段
    > db.user.find({},{age:0});
    //返回tags=tennis 除了comments的所有列
    db.posts.find( { tags : 'tennis' }, { comments : 0 } );
    //返回userid=16的name字段
    > db.user.find({userid:16},{name:1});
    { "_id" : 16, "name" : "user16" }
    //返回x=john的所有z字段
    db.things.find( { x : "john" }, { z : 1 } );

    注:  _id字段始终都会被返回,哪怕没有明确指定

    三、查询条件

    1)  , =, >, >=

    // 大于: field > value 
    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 } } ); 
     
    

    2)  $all

      $all操作类似$in操作,但是不同的是,$all操作要求数组里面的值全部被包含在返回的记录里面,如:

    > use test; 
    switched to db test 
    
    > db.things.insert({a:[1,2,3]}); 
    
    > db.things.find();             
    { "_id" : ObjectId("4de73360059e7f4bdf907cfe"), "a" : [ 1, 2, 3 ] } 
    
    > db.things.find({a:{$all:[2,3]}}); 
    { "_id" : ObjectId("4de73360059e7f4bdf907cfe"), "a" : [ 1, 2, 3 ] } 
    
    > db.things.find({a:{$all:[1,2,3]}}); 
    { "_id" : ObjectId("4de73360059e7f4bdf907cfe"), "a" : [ 1, 2, 3 ] } 
    
    > db.things.find({a:{$all:[1]}});    
    { "_id" : ObjectId("4de73360059e7f4bdf907cfe"), "a" : [ 1, 2, 3 ] } 
    
    > db.things.find({a:{$all:[1,2,3,4]}});
    
    

    3)  $exists

    $exists操作检查一个字段是否存在,如:

    > for(var i=0;i1000;i++) db.user.save({_id:i,name:'user'+i,userid:i,age:20}); 
     
    //包含userid 
    > db.user.find({userid:{$exists:true}}).limit(5); 
    { "_id" : 0, "name" : "user0", "userid" : 0, "age" : 20 } 
    { "_id" : 1, "name" : "user1", "userid" : 1, "age" : 20 } 
    { "_id" : 2, "name" : "user2", "userid" : 2, "age" : 20 } 
    { "_id" : 3, "name" : "user3", "userid" : 3, "age" : 20 } 
    { "_id" : 4, "name" : "user4", "userid" : 4, "age" : 20 } 
    
    //不包含sex字段 
    > db.user.find({sex:{$exists:false}}).limit(5);   

    4)  $mod

    $mod操作可以让我们简单的进行取模操作,而不需要用到where子句,如:

    //where子句 
    > db.user.find("this._id%10==1").limit(5); 
    { "_id" : 1, "name" : "user1", "userid" : 1, "age" : 20 } 
    { "_id" : 11, "name" : "user11", "userid" : 11, "age" : 20 } 
    { "_id" : 21, "name" : "user21", "userid" : 21, "age" : 20 } 
    { "_id" : 31, "name" : "user31", "userid" : 31, "age" : 20 } 
    { "_id" : 41, "name" : "user41", "userid" : 41, "age" : 20 } 
    
    //$mod操作 
    > db.user.find({_id:{$mod:[10,1]}}).limit(5); 
    { "_id" : 1, "name" : "user1", "userid" : 1, "age" : 20 } 
    { "_id" : 11, "name" : "user11", "userid" : 11, "age" : 20 } 
    { "_id" : 21, "name" : "user21", "userid" : 21, "age" : 20 } 
    { "_id" : 31, "name" : "user31", "userid" : 31, "age" : 20 } 
    { "_id" : 41, "name" : "user41", "userid" : 41, "age" : 20 } 
    
    

    5)  $ne

    $ne意思是not equal,不等于,不用多说,看例子:

    > db.user.find().limit(5); 
    { "_id" : 0, "name" : "user0", "userid" : 0, "age" : 20 } 
    { "_id" : 1, "name" : "user1", "userid" : 1, "age" : 20 } 
    { "_id" : 2, "name" : "user2", "userid" : 2, "age" : 20 } 
    { "_id" : 3, "name" : "user3", "userid" : 3, "age" : 20 } 
    { "_id" : 4, "name" : "user4", "userid" : 4, "age" : 20 } 
    
    > db.user.find({_id:{$ne:0}}).limit(5); 
    { "_id" : 1, "name" : "user1", "userid" : 1, "age" : 20 } 
    { "_id" : 2, "name" : "user2", "userid" : 2, "age" : 20 } 
    { "_id" : 3, "name" : "user3", "userid" : 3, "age" : 20 } 
    { "_id" : 4, "name" : "user4", "userid" : 4, "age" : 20 } 
    { "_id" : 5, "name" : "user5", "userid" : 5, "age" : 20 }
    
    

    6)  $in

    $in操作类似于传统关系数据库中的IN,看例子:

    //数据库中有所有数组对应的记录 
    > db.user.find({_id:{$in:[2,3,4,5,6]}}).limit(5); 
    { "_id" : 2, "name" : "user2", "userid" : 2, "age" : 20 } 
    { "_id" : 3, "name" : "user3", "userid" : 3, "age" : 20 } 
    { "_id" : 4, "name" : "user4", "userid" : 4, "age" : 20 } 
    { "_id" : 5, "name" : "user5", "userid" : 5, "age" : 20 } 
    { "_id" : 6, "name" : "user6", "userid" : 6, "age" : 20 } 
    
    //因为数据库中没有_id=1111的记录 
    > db.user.find({_id:{$in:[2,3,4,5,1111]}}).limit(5); 
    { "_id" : 2, "name" : "user2", "userid" : 2, "age" : 20 } 
    { "_id" : 3, "name" : "user3", "userid" : 3, "age" : 20 } 
    { "_id" : 4, "name" : "user4", "userid" : 4, "age" : 20 } 
    { "_id" : 5, "name" : "user5", "userid" : 5, "age" : 20 }

    7)  $nin

    $nin跟$in操作相反,看例子:

    //扣掉_id=1/2/3/4的记录 
    > db.user.find({_id:{$nin:[1,2,3,4]}}).limit(5);     
    { "_id" : 0, "name" : "user0", "userid" : 0, "age" : 20 } 
    { "_id" : 5, "name" : "user5", "userid" : 5, "age" : 20 } 
    { "_id" : 6, "name" : "user6", "userid" : 6, "age" : 20 } 
    { "_id" : 7, "name" : "user7", "userid" : 7, "age" : 20 } 
    { "_id" : 8, "name" : "user8", "userid" : 8, "age" : 20 } 
    

    8)  $nor、$or

    $nor跟$or相反,不好解释,看例子:

    > db.user.find({$nor:[{_id:2},{name:'user3'},{userid:4}]}).limit(5);   
    { "_id" : 0, "name" : "user0", "userid" : 0, "age" : 20 } 
    { "_id" : 1, "name" : "user1", "userid" : 1, "age" : 20 } 
    { "_id" : 5, "name" : "user5", "userid" : 5, "age" : 20 } 
    { "_id" : 6, "name" : "user6", "userid" : 6, "age" : 20 } 
    { "_id" : 7, "name" : "user7", "userid" : 7, "age" : 20 }
    
    > db.user.find({$or:[{_id:2},{name:'user3'},{userid:4}]}).limit(5); 
    { "_id" : 2, "name" : "user2", "userid" : 2, "age" : 20 } 
    { "_id" : 3, "name" : "user3", "userid" : 3, "age" : 20 } 
    { "_id" : 4, "name" : "user4", "userid" : 4, "age" : 20 } 
    

    以上所述就是本文的全部内容了,希望大家能够喜欢。

    您可能感兴趣的文章:
    • java操作mongodb基础(查询 排序 输出list)
    • MongoDB各种查询操作详解
    • php操作MongoDB基础教程(连接、新增、修改、删除、查询)
    • java查询mongodb中的objectid示例
    • MongoDB下根据数组大小进行查询的方法
    • MongoDB查询操作限制返回字段的方法
    • MongoDB查询技巧总结
    • Python中的MongoDB基本操作:连接、查询实例
    • MongoDB导出查询结果到文件例子
    • Java操作MongoDB模糊查询和分页查询
    上一篇:浅析mongodb中group分组
    下一篇:mongodb eval 执行服务器端脚本
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    浅谈mongodb中query查询 浅谈,mongodb,中,query,查询,