zoukankan      html  css  js  c++  java
  • 6.30MongoDB之条件操作符

    6.30MongoDB之条件操作符

    描述

    条件操作符用于比较两个表达式并从mongoDB集合中获取数据。

    在本章节中,我们将讨论如何在MongoDB中使用条件操作符。

    MongoDB中条件操作符有:

    • (>) 大于 - $gt

    • (<) 小于 - $lt

    • (>=) 大于等于 - $gte

    • (<= ) 小于等于 - $lte

    为了测试这几个条件操作符,先清除集合中已有的数据

    db.getCollection("teacher").remove({})

    构造测试数据

    document1=(
    {
    title:"Redis",
    description:"Redis是一个很好的缓存数据库",
    by:"JunBoy",
    tags:['redis'],
    like:200
    }
    )
    document2=(
    {
    title:'Java',
    description:'Java是由Sun Microsystems公司于1995年5月推出的高级程序设计语言。',
    by:'JunBoy',
    tags:['java'],
    like:150
    }
    )
    document3=(
    {
    title:'MongoDB',
    description:'MongoDB 是一个 Nosql 数据库',
    by:'JunBoy',
    tags:['mongodb'],
    like:100
    }
    )

    将测试数据添加到集合中

    db.getCollection("demo").insertMany(
    [
    document1,
    document2,
    document3
    ]
    )

    Java的方法

    package mongodbtest;

    import com.mongodb.MongoClient;
    import com.mongodb.MongoCredential;
    import com.mongodb.ServerAddress;
    import com.mongodb.client.MongoCollection;
    import com.mongodb.client.MongoDatabase;
    import org.bson.Document;

    import java.util.ArrayList;
    import java.util.List;

    /**
    * 使用MongoDB连接到服务器环境上
    * @since JDK 1.8
    * @date 0221/6/29
    * @author Lucifer
    */
    public class mongoconnection {

       /*配置属性*/
       private static final String MONGO_HOST = "localhost";
    //   private static final Integer MONGO_PORT = 27037;
       private static final Integer MONGO_PORT = 27017;
    //   private static final String MONGO_USER = "admin";
    //   private static final String MONGO_PASSWORD = "r123456";
       private static final String MONGO_DB_NAME = "practice";
       private static final String GATHER_NAME = "teacher";
       private static final String GATHER_NAME2 = "demo";

       public static void getConnection(){
           /*用事务连接到远程的MongoDB服务器上*/
           try {
               /*使用java包下的类构造一个连接对象*/
               ServerAddress serverAddress = new ServerAddress(MONGO_HOST, MONGO_PORT);

               /*集群连接方法--->构造列表*/
               List<ServerAddress> addresses = new ArrayList<ServerAddress>();
               addresses.add(serverAddress);

    //           /*使用Mongo包下的类MongoCredential建立连接对象*/
    //           //三个参数:用户名、数据库名称、密码
    //           MongoCredential credential = MongoCredential.createScramSha1Credential(MONGO_USER,
    //                   MONGO_DB_NAME,
    //                   MONGO_PASSWORD.toCharArray()); //最后一个形参需要转换成字符类型而不是字符串类型,使用toCharArray方法
    //           /*集群连接方法--->构造列表*/
    //           List<MongoCredential> credentials = new ArrayList<MongoCredential>();
    //           credentials.add(credential);

               /*通过连接认证MongoDB连接--->使用MongoDBClient类下的方法*/
               MongoClient mongoClient = new MongoClient(addresses); //放入列表对象

               System.out.println("Connect to database successfully!");

               /*连接到数据库*/
               MongoDatabase mongoDatabase = mongoClient.getDatabase(MONGO_DB_NAME);

    //           mongoDatabase.createCollection(GATHER_NAME2);
    //           System.out.println("create gather successfully!");

               /*通过MongoCollection接口获取到集合*/
               MongoCollection<Document> collection = mongoDatabase.getCollection(GATHER_NAME);
               System.out.println("获取集合成功");

               //插入文档
               /*
               1、创建文档--->org.bson.Document(对应到MongoDB的文档数据类型).参数为key-value格式
               2、创建文档集合(List集合)
               3、将文档集合插入数据库集合中--->集合插入集合 mongoCollection.insertMany(List<Document>)
               插入单个文档可以用 mongoCollection.insertOne(Document)
                */

               /*创建文档对象*/
               Document document = new Document("title","Redis").
                       append("description","Redis是一个很好的缓存数据库").
                       append("by","JunBoy").
                       append("tags","['redis']").
                       append("like",200); //在这里就是key-value的形式
               /*创建第二个文档对象*/
               Document document1 = new Document("title","Java").
                       append("description","Java是由Sun Microsystems公司于1995年5月推出的高级程序设计语言。").
                       append("by","JunBoy").
                       append("tags","['java']").
                       append("like",150);
               /*创建第三个文档对象*/
               Document document2 = new Document("title","MongoDB").
                       append("description","MongoDB 是一个 Nosql 数据库").
                       append("by","JunBoy").
                       append("tags","['mongodb']").
                       append("like",100);

               /*创建文档集合*/
               List<Document> documents = new ArrayList<>();
               /*向文档集合当中添加文档*/
               documents.add(document);
               documents.add(document1);
               documents.add(document2);

               /*将文档集合插入MongoDB数据库*/
               //使用collection类下的方法
               collection.insertMany(documents);

               System.out.println("文档插入成功!");
          }catch (Exception e){
               System.err.println(e.getClass().getName() + ":" + e.getMessage());
          }
      }
       /*
       步骤概括:
       1、利用ServerAddress类访问到地址和端口
       2、使用MongoDB的jar包下封装好的证书类(Credential)验证身份信息--->构造器:用户名、数据库名称、密码
       3、使用Mongo客户端类封装好的方法验证是否连接成功--->构造器:Address类的列表、Credential类的列表
       4、use指定的数据库--->使用mongoDatabase类下的方法连接到数据库
        */

       public static void main(String[] args) {
           getConnection();
      }
    }

    MongoDB(>)大于操作符 - $gt(greater)

    获取 "teacher" 集合中 "likes" 大于 100 的数据

    db.getCollection("teacher").find(
    {
    like:{
    $gt:100
    }
    }
    )

    类似SQL语句

    Select * from col where likes > 100;

    MongoDB(>=)大于等于操作符 - $gte(greater equal)

    获取"teacher"集合中 "likes" 大于等于 100 的数据

    db.getCollection("teacher").find(
    {
    like:{
    $gte:100
    }
    }
    )

    类似SQL语句

    Select * from col where likes >=100;

    MongoDB(<)小于操作符 - $lt--->是L不是I(less than)

    获取"teacher"集合中 "likes" 小于 150 的数据

    db.getCollection("teacher").find(
    {
    like:{
    $lt:150
    }
    }
    )

    类似SQL语句

    Select * from col where likes < 150;

    MongoDB(<=)小于等于操作符 - $lte

    获取"teacher"集合中 "likes" 小于等于 150 的数据

    db.getCollection("teacher").find(
    {
    like:{
    $lte:150
    }
    }
    )

    MongoDB(<)和(>)查询 - $lt和$gt

    获取"teacher"集合中 "likes" 大于100,小于 200 的数据--->使用AND操作符结合大小的操作符

    db.getCollection("teacher").find(
    {
    like:{
    $lt:200,
    $gt:100
    }
    }
    )

    需要注意的几个点

    • 操作符要注意

      • 大于(greater)--->$gt

      • 小于(less than)-->$lt

      • 大于等于(greater equal)--->$gte

      • 小于等于(less than equal)--->%lte

    • 注意格式

      • MongoDB的数据结构是BSON类型的(Binary JSON)所以在方法后要先接一个{}

      • 再在第一个{}里面写条件

      • 条件的格式也是:

        • {域(field):{变量:内容}}

    • 删除集合

      • db.getCollection("集合名").drop()
    • 创建集合

      • db.createCollection(
           "集合名",
          {
          option:value,
          option:value
          }
        )
      •  

    It's a lonely road!!!
  • 相关阅读:
    Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result
    smarty {for}{forelse}
    整理了一份比较全面的PHP开发编码规范.
    安装SQL server 提示重新启动计算机失败
    使用自定义《UIActivity》进行内容分享-b
    五子棋-b
    iOS面试题16719-b
    iOS 图片填充 UIImageView
    将UIImage保存到iOS照片库和对应程序沙盒中-b
    IOS webview中cookie的读取与保存-b
  • 原文地址:https://www.cnblogs.com/JunkingBoy/p/14955951.html
Copyright © 2011-2022 走看看