• 周蓬安.blog的博客—强国博客—人民网 2019-05-10
  • 紫光阁中共中央国家机关工作委员会 2019-05-10
  • 感触名家笔下的端午文化吃香粽原来可以这样文艺 2019-05-09
  • 追梦夺冠游行嘲讽詹皇 百万人面前穿订制T恤羞辱他 2019-04-27
  • 《瘟疫传说》:黑死病恐怖 姐弟在绝望中求生 2019-04-10
  • 陕西国防工业职业技术学院百名大学生志愿者敬老院慰问孤寡老人陕西国防工业职业技术学院百名大学生志愿者敬老院慰问-陕西教育新闻 2019-04-08
  • 西藏拉萨:新家园 新生活 2019-04-08
  • 尊重和保障宗教信仰自由的中国实践 2019-04-06
  • 一敬泯恩仇 俄罗斯队主帅这个动作太暖了 2019-03-20
  • 四大名著剧组首次同台忆往事 经典影视剧如何铸就? 2018-12-07
  • “天眼”凝望 探秘宇宙 2018-12-07
  • 0

    Mongodb条件查询

    Posted by 撒得一地 on 2016年3月28日 in Mongodb教程
    国外稳定加速器推荐    Express | Vypr

    MongoDB 与 RDBMS Where 语句比较

    如果你熟悉常规的 SQL 数据,通过下表可以更好的理解 MongoDB 的条件语句查询:

    操作             格式                                   
    等于          {<key>:<value>}      
    
    小于          {<key>:{$lt:<value>}}     
    
    小于或等于     {<key>:{$lte:<value>}}          
    
    大于          {<key>:{$gt:<value>}}          
    
    大于或等于     {<key>:{$gte:<value>}}  
    
    不等于       {<key>:{$ne:<value>}}  
    

    上面的实例在RDBMS中的分别对应的语句如下:

    db.col.find({"name":"psz"}) 等价于 where name = 'psz'
    
    db.col.find({"likes":{$lt:50}}) 等价于 where likes < 50
    
    db.col.find({"likes":{$lte:50}}) 等价于 where likes <= 50
    
    db.col.find({"likes":{$gt:50}}) 等价于 where likes > 50
    
    
    db.col.find({"likes":{$gte:50}}) 等价于 where likes >= 50
    
    
    db.col.find({"likes":{$ne:50}}) 等价于where likes != 50  
    

    下面的示例就是说明如何执行一个类似 SQL 的查询, 并演示了怎么在 MongoDB 里实现。 这是在 MongoDB shell 里查询, 当然你也可以用其他的应用程序驱动或者语言来实现:

    > db.test.find({name:"psz"}).forEach(printjson);
    {"_id" : ObjectId("4c2209f9f3924d31102bd84a"),"name" : "psz"}
    

    MongoDB AND 条件

    查询条件是 { a:A, b:B, … } 类似 “ where a==A and b==B and …”。

    MongoDB 的 find() 方法可以传入多个键(key),每个键(key)以逗号隔开,及常规 SQL 的 AND 条件。

    语法格式如下:

    >db.col.find({key1:value1, key2:value2})
    

    再举个例子,比如sql中:SELECT * FROM things WHERE x=4 and j!=0,那么在Mongodb中这样输出:

    > db.things.find({x:4,j:{$ne:0}}).forEach(printjson);
    { "_id" : ObjectId("4c220a42f3924d31102bd856"), "x" : 4, "j" : 1 }
    
    { "_id" : ObjectId("4c220a42f3924d31102bd857"), "x" : 4, "j" : 2 }
    
    { "_id" : ObjectId("4c220a42f3924d31102bd858"), "x" : 4, "j" : 3 }
    

    上面显示的是所有的元素, 当然我们也可以返回特定的元素, 类似于返回表里某字段的值,只需要在 find({x:4}) 里指定元素的名字,如:

    #类似sql:SELECT j FROM things WHERE x=4 and j != 0
    > db.things.find({x:4,j:{$ne:0}}, {j:true}).forEach(printjson);
    { "_id" : ObjectId("4c220a42f3924d31102bd856"), "j" : 1 }
    { "_id" : ObjectId("4c220a42f3924d31102bd857"), "j" : 2 }
    { "_id" : ObjectId("4c220a42f3924d31102bd858"), "j" : 3 }
    

    MongoDB OR 条件

    MongoDB OR 条件语句使用了关键字 $or,语法格式如下:

    >db.col.find(
       {
          $or: [
             {key1: value1}, {key2:value2}
          ]
       }
    )
    

    实例:

    > db.things.find({$or:[{"x":4},{"x":5}]}).forEach(printjson);
    { "_id" : ObjectId("4c220a42f3924d31102bd856"), "x" : 4, "j" : 1 }
    { "_id" : ObjectId("4c220a42f3924d31102bd857"), "x" : 4, "j" : 2 }
    { "_id" : ObjectId("4c220a42f3924d31102bd858"), "x" : 4, "j" : 3 }
    { "_id" : ObjectId("4c220a42f3924d31102bd859"), "x" : 5, "j" : 3 }
    

    findOne()语法语法

    为了方便考虑, MongoDB shell 避免游标可能带来的开销, 提供一个 findOne() 函数. 这个函数和 find() 函数一样, 不过它返回的是游标里第一条数据, 或者返回 null,即空数据。

    作为一个例子, name=”mongo” 可以用很多方法来实现, 可以用 next() 来循环游标或者当做数组返回第一个元素。但是用 findOne() 方法则更简单和高效:

    > printjson(db.things.findOne({name:"mongo"}));
    { "_id" : ObjectId("4c2209f9f3924d31102bd84a"), "name" : "mongo" }
    

    通过通过 limit 限制结果集数量

    如果需要限制结果集的长度, 那么可以调用 limit 方法。

    这是强烈推荐解决性能问题的方法, 就是通过限制条数来减少网络传输, 例如:

    > db.things.find().limit(3);
    { "_id" : ObjectId("4c2209f9f3924d31102bd84a"), "name" : "mongo" }
    { "_id" : ObjectId("4c2209fef3924d31102bd84b"), "x" : 3 }
    { "_id" : ObjectId("4c220a42f3924d31102bd856"), "x" : 4, "j" : 1 }
    

    本文地址://www.cfage.com/1756.html

    上一篇:

    下一篇:

    相关推荐

    发表评论

    电子邮件地址不会被公开。 必填项已用*标注

    7 + 1 = ?

    网站地图|广东快乐10分开奖直播

    Copyright © 2015-2019 广东快乐10分开奖直播 All rights reserved.
    闽ICP备15015576号-1,版权所有?psz.

  • 周蓬安.blog的博客—强国博客—人民网 2019-05-10
  • 紫光阁中共中央国家机关工作委员会 2019-05-10
  • 感触名家笔下的端午文化吃香粽原来可以这样文艺 2019-05-09
  • 追梦夺冠游行嘲讽詹皇 百万人面前穿订制T恤羞辱他 2019-04-27
  • 《瘟疫传说》:黑死病恐怖 姐弟在绝望中求生 2019-04-10
  • 陕西国防工业职业技术学院百名大学生志愿者敬老院慰问孤寡老人陕西国防工业职业技术学院百名大学生志愿者敬老院慰问-陕西教育新闻 2019-04-08
  • 西藏拉萨:新家园 新生活 2019-04-08
  • 尊重和保障宗教信仰自由的中国实践 2019-04-06
  • 一敬泯恩仇 俄罗斯队主帅这个动作太暖了 2019-03-20
  • 四大名著剧组首次同台忆往事 经典影视剧如何铸就? 2018-12-07
  • “天眼”凝望 探秘宇宙 2018-12-07
  • 海南特区彩票论坛 南国特区彩票论坛 排列5和值尾走势图带连线专业版 浙江体彩20选5中奖表 2016年排列五走势图 七乐彩走势图 双色球精准公式 排列五走势图二元网 新快3 北京pk10开彩结果 福彩欢乐生肖 幸运赛车综合走势图 体育彩票排列5 上海时时乐出号走势图 北京快乐八走势图 广东36选7开奖结果