19、MongoDB实战:Java访问MongoDB-操作文档-21000字匠心巨作

Java 访问 MongoDB-操作文档

    • 1.添加文档
    • 1.1 添加单个文档
    • 1.2 添加多个文档
  • 2.更新文档
    • 2.1 更新单个文档单个键
    • 2.2 更新单个文档多个键
    • 2.3 更新多个文档中的单个键
    • 2.4 更新多个文档中的多个键
    • 2.5 更新文档中的数组
  • 3.查询文档
    • 3.1 查询全部文档
    • 3.2 根据_id 查询文档-$eq
    • 3.3 查询多个文档-$gt
    • 3.4 查询多个文档-$type
    • 3.5 查询多个文档-$in
    • 3.6 查询多个文档-$nin
    • 3.7 查询多个文档-$regex
    • 3.8 逻辑运算符-$and
    • 3.9 逻辑运算符-$or
    • 3.10 逻辑运算符-$ and 与$or 联合使用
    • 3.11 查询文档-排序处理
  • 4.日期操作
    • 4.1 插入系统当前日期
    • 4.2 插入指定日期
    • 4.3 查询日期-$eq
    • 4.4 查询日期-$gt
  • 5.聚合操作
    • 5.1 聚合操作-计算文档总数-$sum
    • 5.2 聚合操作-计算值的总和-$sum
    • 5.3 聚合操作-在分组中计算值的总和-$sum
    • 5.4 聚合操作-分组前的数据过滤-$match
    • 5.5 聚合操作-分组后的数据过滤-$match
    • 5.6 聚合操作-$project-聚合投影约束
    • 5.7 聚合操作-$project-字符串处理
    • 5.8 聚合操作-$project 算术运算
    • 5.9 聚合操作-$project 日期处理
  • 6.分页查询
    • 6.1 使用 skip 与 limit 方法分页
    • 6.2 优化分页查询

1.添加文档

1.1 添加单个文档

/**
* 添加单个文档
*/
public void inesrtSingleDocument(){
   
   
     
	//获取集合
	MongoCollection collection = MongoDBAuthPoolUtil.getCollection("develop","devtest");
	// {}---->Document
	//append(String key,Object value)---->{key:value}
	Document docu = new Document();
	docu.append("username","lisi").append("userage",26).append("userdesc","Very Good").append("userlike", Arrays.asList(new String[]{
   
   
     "Music","Sport"}));
	collection.insertOne(docu);
}

1.2 添加多个文档

/**
* 文档的批量添加
*/
public void insertManyDocument(){
   
   
     
	MongoCollection collection = MongoDBAuthPoolUtil.getCollection("develop","devtest");
	List<Document> list = new ArrayList<>();
	for(int i=0;i<5;i++){
   
   
     
		Document docu = new Document();
		docu.append("username","zhangsan"+i);
		docu.append("userage",20+i);
		docu.append("userdesc","OK"+i);
		docu.append("userlike",Arrays.asList(new String[]{
   
   
     "Music","Sport"}));
		list.add(docu);
	}
	collection.insertMany(list);
}

2.更新文档

2.1 更新单个文档单个键

/**
* 更新单个文档单个键
*/
public void updateSingleDocumentSingleKey(){
   
   
     
	MongoCollection collection = MongoDBAuthPoolUtil.getCollection("develop","devtest");
	//更新文档
	//Filters 封装了条件的一个工具类{$set:{userage:28}}
	collection.updateOne(Filters.eq("username","lisi"),new Document("$set",new Document("userage",28)));
}

2.2 更新单个文档多个键

/**
* 更新单个文档多个键
*/
public void updateSingleDocumentManyKey(){
   
   
     
	MongoCollection collection = MongoDBAuthPoolUtil.getCollection("develop","devtest");
	collection.updateOne(Filters.eq("username","zhangsan0"),new Document("$set",new Document("userage",18).append("userdesc","Very Good")));
}

2.3 更新多个文档中的单个键

/**
* 更新多个文档单个键
*/
public void updateManyDocumentSingleKey(){
   
   
     
	MongoCollection collection = MongoDBAuthPoolUtil.getCollection("develop","devtest");
	collection.updateMany(Filters.ne("username",null),new Document("$set",new Document("userdesc","Very Good")));
}

2.4 更新多个文档中的多个键

/**
* 更新多个文档多个键
*/
public void updateManyDocumentManyKey(){
   
   
     
	MongoCollection collection = MongoDBAuthPoolUtil.getCollection("develop","devtest");
	collection.updateMany(Filters.ne("username",null),new Document("$set",new Document("userdesc","OK").append("userage",20)));
}

2.5 更新文档中的数组

/**
* 更新文档中的数组
* {$push:{}}
*/
public void updateDocumentArray(){
   
   
     
	MongoCollection collection = MongoDBAuthPoolUtil.getCollection("develop","devtest");
	collection.updateOne(Filters.eq("username","lisi"),new Document("$push",new Document("userlike","Art")));
}

3.查询文档

3.1 查询全部文档

/**
* 查询全部文档
*/
public void selectDocumentAll(){
   
   
     
	MongoCollection collection = MongoDBAuthPoolUtil.getCollection("develop","devtest");
	//返回的是一个文档的迭代器
	FindIterable<Document> iterable = collection.find();
	MongoCursor<Document> cursor = iterable.iterator();
	while(cursor.hasNext()){
   
   
     
		Document docu = cursor.next();
		System.out.println(docu.get("username")+"\t"+docu.get("userage")+"\t"+docu.get("userdesc")+"\t"+docu.get("userlike"));
	} 
}

3.2 根据_id 查询文档-$eq

/**
* 根据_id 查询文档
*/
public void selectDocumentById(){
   
   
     
	MongoCollection collection = MongoDBAuthPoolUtil.getCollection("develop","devtest");
	FindIterable<Document> iterable = collection.find(Filters.eq("_id",new ObjectId("5d398cd64b022206d87d168e")));
	MongoCursor<Document> cursor = iterable.iterator();
	while(cursor.hasNext()){
   
   
     
		Document docu = cursor.next(); 
		System.out.println(docu.get("username")+"\t"+docu.get("userage")+"\t"+docu.get("userdesc")+"\t"+docu.get("userlike"));
	} 
}

3.3 查询多个文档-$gt

/**
* 根据年龄查询文档,条件是年龄大于 19
*/
public void selectDocumentConditionByGt(){
   
   
     
	MongoCollection collection = MongoDBAuthPoolUtil.getCollection("develop","devtest");
	FindIterable iterable = collection.find(Filters.gt("userage",19));
	MongoCursor<Document> cursor = iterable.iterator();
	while(cursor.hasNext()){
   
   
     
		Document docu = cursor.next();
		System.out.println(docu.get("username")+"\t"+docu.get("userage")+"\t"+docu

版权声明:本文不是「本站」原创文章,版权归原作者所有 | 原文地址: