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!!!
原文地址:https://www.cnblogs.com/JunkingBoy/p/14955951.html