zoukankan      html  css  js  c++  java
  • MongoDB快速入门(五)- Where子句

    RDBMS Where子句等效于MongoDB

    查询文档在一些条件的基础上,可以使用下面的操作

    操作语法示例RDBMS等效语句
    Equality {<key>:<value>} db.mycol.find({"by":"yiibai tutorials"}).pretty() where by = 'yiibai tutorials'
    Less Than {<key>:{$lt:<value>}} db.mycol.find({"likes":{$lt:50}}).pretty() where likes < 50
    Less Than Equals {<key>:{$lte:<value>}} db.mycol.find({"likes":{$lte:50}}).pretty() where likes <= 50
    Greater Than {<key>:{$gt:<value>}} db.mycol.find({"likes":{$gt:50}}).pretty() where likes > 50
    Greater Than Equals {<key>:{$gte:<value>}} db.mycol.find({"likes":{$gte:50}}).pretty() where likes >= 50
    Not Equals {<key>:{$ne:<value>}} db.mycol.find({"likes":{$ne:50}}).pretty() where likes != 50

    AND 在 MongoDB

    语法

    在 find()方法,如果您传递多个键通过","将它们分开,那么MongoDB对待它就如AND条件一样。基本语法如下所示:

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

    例子

    下面给出的例子将显示所有教程含“yiibai tutorials”和其标题是“MongoDB Overview”

    >db.mycol.find({"by":"yiibai tutorials","title": "MongoDB Overview"}).pretty()
    {
       "_id": ObjectId(7df78ad8902c),
       "title": "MongoDB Overview", 
       "description": "MongoDB is no sql database",
       "by": "yiibai tutorials",
       "url": "http://www.yiibai.com",
       "tags": ["mongodb", "database", "NoSQL"],
       "likes": "100"
    }
    >

    对于上面给出的例子相当于where子句:' where by='yiibai tutorials' AND title='MongoDB Overview' '。可以传递任何数目的键-值对在find子句。

    OR 在 MongoDB

    语法

    要查询基于OR条件的文件,需要使用$or关键字。OR的基本语法如下所示:

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

    例子

    下面给出的例子将显示所有撰写含有 'yiibai tutorials' 或是标题为 'MongoDB Overview' 的教程

    >db.mycol.find({$or:[{"by":"tutorials point"},{"title": "MongoDB Overview"}]}).pretty()
    {
       "_id": ObjectId(7df78ad8902c),
       "title": "MongoDB Overview", 
       "description": "MongoDB is no sql database",
       "by": "yiibai tutorials",
       "url": "http://www.yiibai.com",
       "tags": ["mongodb", "database", "NoSQL"],
       "likes": "100"
    }
    >

    使用 AND 和 OR 在一起

    例子

    下面给出的例子显示有喜欢数大于100 的文档,其标题要么是 'MongoDB Overview' 或 'yiibai tutorials'. 等效于SQL的where子句:'where likes>10 AND (by = 'yiibai tutorials' OR title = 'MongoDB Overview')'

    >db.mycol.find("likes": {$gt:10}, {$or: [{"by": "yiibai tutorials"}, {"title": "MongoDB Overview"}] }).pretty()
    {
       "_id": ObjectId(7df78ad8902c),
       "title": "MongoDB Overview", 
       "description": "MongoDB is no sql database",
       "by": "yiibai tutorials",
       "url": "http://www.yiibai.com",
       "tags": ["mongodb", "database", "NoSQL"],
       "likes": "100"
    }
    >
  • 相关阅读:
    剑指offer 整数中1出现的次数(从1到n整数中1出现的次数)
    剑指offer 把数组排成最小的数
    剑指offer 丑数
    剑指offer 字符串的排列
    剑指offer 数组中出现次数超过一半的数字
    剑指offer 最小的K个数
    操作系统 页面置换算法(C++实现)
    剑指offer 二叉搜索树与双向链表
    剑指offer 复杂链表的复制
    操作系统 银行家算法(C++实现)
  • 原文地址:https://www.cnblogs.com/yang-hao/p/5383059.html
Copyright © 2011-2022 走看看