MongoDB学习-->Gridfs分布式存储&DBRef关联查询
2024-10-16 04:57:42
mongodb自带的一个分布式文件系统
fs.files _id filename md5 size uploaddate contenttype metadata {"user_id":1}
fs.chunks _id files_id n(序号) data
{ "metadata" : { "user_id" : 101} , "filename" : "video.min2.js" , "aliases" : null , "chunkSize" : 261120 , "uploadDate" : { "$date" : "2017-03-28T13:48:20.784Z"} , "length" : 282753 , "_id" : { "$oid" : "58da69a45aa6c70234eb70f1"} , "contentType" : null , "md5" : "e5ab0872d9b25fcb7268df3a93c29873"}
测试GridFs文件上传与下载
package com.tangzhe.gridfs; import com.mongodb.BasicDBObject;
import com.mongodb.gridfs.GridFSDBFile;
import com.mongodb.gridfs.GridFSFile;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.gridfs.GridFsTemplate;
import org.springframework.test.context.junit4.SpringRunner; import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException; /**
* Created by 唐哲
* 2018-03-15 9:33
* 测试GridFs文件上传与下载
*/
@RunWith(SpringRunner.class)
@SpringBootTest
public class GridFsTest { @Autowired
private GridFsTemplate gridFsTemplate; /**
* 测试GridFs文件上传
*/
//@Test
public void gridFsUpload() throws FileNotFoundException {
//System.out.println(gridFsTemplate);
File file = new File("D:\\IdeaProjects\\cxytiandi\\mongodb-demo\\upload.txt");
GridFSFile gridFSFile = gridFsTemplate.store(new FileInputStream(file), file.getName(), new BasicDBObject("user_id", 101));
System.out.println(gridFSFile.toString());
} /**
* 测试GridFs文件下载
*/
//@Test
public void gridFsDownload() throws IOException {
GridFSDBFile gridFSDBFile = gridFsTemplate.findOne(Query.query(Criteria.where("_id").is("5aa9cf31d678412b40ff5ab4")));
gridFSDBFile.writeTo("D:\\IdeaProjects\\cxytiandi\\mongodb-demo\\download.txt");
} }
DBRef关联查询
package com.tangzhe.dbref; import lombok.Data;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document; /**
* Created by 唐哲
* 2018-03-15 16:19
* DBRef关联查询
*/
@Document(collection = "class_info")
@Data
public class ClassInfo { @Id
private String id;
private String name; }
package com.tangzhe.dbref; import lombok.Data;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.DBRef;
import org.springframework.data.mongodb.core.mapping.Document; /**
* Created by 唐哲
* 2018-03-15 16:29
* DBRef关联查询
*/
@Document(collection = "student")
@Data
public class Student { @Id
private String id;
private String name;
@DBRef
private ClassInfo classInfo; }
package com.tangzhe.dbref; import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.test.context.junit4.SpringRunner; /**
* Created by 唐哲
* 2018-03-15 16:30
* 测试DBRef关联查询
*/
@RunWith(SpringRunner.class)
@SpringBootTest
public class DbRefTest { @Autowired
private MongoTemplate mongoTemplate; //@Test
public void test1() {
ClassInfo classInfo = new ClassInfo();
classInfo.setName("三年一班");
mongoTemplate.save(classInfo); Student student = new Student();
student.setName("张三");
student.setClassInfo(classInfo);
mongoTemplate.save(student);
} //@Test
public void test2() {
ClassInfo classInfo = mongoTemplate.findOne(Query.query(Criteria.where("id").is("5aaa30c0d678410bac20db1a")), ClassInfo.class);
Student student = new Student();
student.setName("李四");
student.setClassInfo(classInfo);
mongoTemplate.save(student);
} //@Test
public void test3() {
Student student = mongoTemplate.findOne(Query.query(Criteria.where("id").is("5aaa30c0d678410bac20db1b")), Student.class);
System.out.println(student);
} }
最新文章
- [MySQL Reference Manual] 23 Performance Schema结构
- sqlserver事务加锁机制
- 剑指offer编程题java实现(正在更新)
- Source Insight常用功能设置
- 将本地代码上传至github备份的操作方法
- [荐]使用jQuery清空file文件域
- word文档中查找和替换空格符和回车符
- DB2日期和时间函数汇总
- Google代码实验室
- 有关文件夹与文件的查找,删除等功能 在 os 模块中实现
- PCB的整个加工流程
- 飘逸的python - 发送带各种类型附件的邮件
- Java良葛格 学习笔记
- 每天一个linux命令30)--chgrp命令
- MySQL之存储过程和函数
- 结合JDK源码看设计模式——单例模式
- js声明引入和变量声明和变量类型、变量
- MongoDB 日志切割三种方式
- Qt5.8 在windows下mingw静态编译
- webpack对于引入的模块无法智能代码提示