MongoDB 提供了可用于 32 位和 64 位系统的预编译二进制包,你可以从MongoDB官网下载安装,MongoDB 预编译二进制包下载地址:
https://www.mongodb.com/download-center#community
切换到bin目录文件夹下,打开cmd,输入
mongod --dbpath=..\data\db
启动时,注意mongoDB的默认端口是27017
步骤1:
在解压目录中新建 config 文件夹,该文件夹中新建配置文件 mongod.conf,mongod.conf 的 内容如下所示:
systemLog:
destination: file
#日志路径必须是一个.log文件结尾,不能写成../log
path: ../log/mongo.log
logAppend: true
storage:
journal:
enabled: true
dbPath: ../data/db
net:
#bindIp: 127.0.0.1
port: 27017
setParameter:
enableLocalhostAuthBypass: false
此conf文件遵循yaml语法规范,但是有以下几点注意事项:
1)Tab必须替换成空格
2)path路径中如果是双引号,\ 必须改成 \ 或者 /
3)path路径中如果有空格,则整个路径要用双引号,如果没有空格,则路径不需要用双引号
步骤2:
切换到bin目录文件夹下,打开cmd,输入
mongod -f ../config/mongod.conf
或者
mongod --config ../config/mongod.conf
步骤1:
在解压目录中新建 config 文件夹,该文件夹中新建配置文件 mongod.conf,mongod.conf 的 内容如下所示:
systemLog:
destination: file
#日志路径必须是一个.log文件结尾,不能写成../log
path: ../log/mongo.log
logAppend: true
storage:
journal:
enabled: true
dbPath: ../data/db
net:
#注意:此处要想远程能访问,必须bindIp设置成0.0.0.0(与windows不一样)
bindIp: 127.0.0.1
port: 27017
setParameter:
enableLocalhostAuthBypass: false
运行mongod
mongod -f ../config/mongod.conf
或者
mongod --config ../config/mongod.conf
mongo
或
mongo --host=127.0.0.1 --port=27017
> show databases
admin 0.000GB #这是"root"数据库。要是将一个用户添加到这个数据库,这个用户自动继承所有数据库的权限。一些特
定的服务器端命令也只能从这个数据库运行,比如列出所有的数据库或者关闭服务器。
config 0.000GB #当Mongo用于分片设置时,config数据库在内部使用,用于保存分片的相关信息。
local 0.000GB #这个数据永远不会被复制,可以用来存储限于本地单台服务器的任意集合
exit
mongo --help
地址:https://www.mongodb.com/download-center/v2/compass?initial=true
如果是下载安装版,则按照步骤安装;如果是下载加压缩版,直接解压,执行里面的 MongoDBCompassCommunity.exe 文件即可。
use demo
db.user.insert({"name":"zhangsan", "address":"安徽安庆", "sex":1, "age":27})
#创建数据库demo
#自动创建了表user
#插入了一行数据
#查询user表所有数据
db.user.find()
#按条件查询user表
db.user.find({“name”:"zhangsan"})
#按条件查询user表返回指定字段——投影查询
db.user.find({“name”:"zhangsan"}, {name:1, sex:1})
#如果想去掉_id的默认显示
db.user.find({“name”:"zhangsan"}, {name:1, sex:1, _id:0})
覆盖的修改,更新了一个字段,其他字段全部变成了null值
db.user.update({"_id":ObjectId("6286523ee6c2c023f0aca7a5")}, {"name":"测试更新"})
需要使用修改器$set来实现
db.user.update({_id:"628651a1dfcb03375d4ba224"},{$set : {"name":"测试局部更新"}})
更新所有用户为1003的用户的昵称为 凯撒大帝
//默认只修改第一条数据
db.comment.update({userid:"1003"},{$set:{nickname:"凯撒2"}})
//修改所有符合条件的数据
db.comment.update({userid:"1003"},{$set:{nickname:"凯撒大帝"}},{multi:true})
db.comment.update({_id:"3"},{$inc:{likenum:NumberInt(1)}})
#删除user表的指定数据
db.user.remove({"name":"zhangsan"})
#删除user表的所有数据
db.user.remove({})
org.springframework.boot
spring-boot-starter-parent
2.1.6.RELEASE
com.yzw
article
1.0-SNAPSHOT
8
8
org.springframework.boot
spring-boot-starter-test
test
org.springframework.boot
spring-boot-starter-data-mongodb
org.projectlombok
lombok
1.18.22
pojo——Comment
@Document(collection="comment")
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Comment implements Serializable {
//主键标识,该属性的值会自动对应mongodb的主键字段"_id",如果该属性名就叫“id”,则该注解可以省略,否则必须写
@Id
private String id;//主键
//该属性对应mongodb的字段的名字,如果一致,则无需该注解
@Field("content")
private String content;//吐槽内容
private Date publishtime;//发布日期
//添加了一个单字段的索引
@Indexed
private String userid;//发布人ID
private String nickname;//昵称
private LocalDateTime createdatetime;//评论的日期时间
private Integer likenum;//点赞数
private Integer replynum;//回复数
private String state;//状态
private String parentid;//上级ID
private String articleid;
}
dao——CommentRepository
//评论的持久层接口
public interface CommentRepository extends MongoRepository {
//根据父id,查询子评论的分页列表
Page findByParentid(String parentid, Pageable pageable);
}
service——CommentService
@Service
public class CommentService {
//注入dao
@Autowired
private CommentRepository commentRepository;
/**
* 保存一个评论
*
* @param comment
*/
public void saveComment(Comment comment) {
//如果需要自定义主键,可以在这里指定主键;如果不指定主键,MongoDB会自动生成主键
//设置一些默认初始值。。。
//调用dao
commentRepository.save(comment);
}
/**
* 更新评论
*
* @param comment
*/
public void updateComment(Comment comment) {
//调用dao
commentRepository.save(comment);
}
/**
* 根据id删除评论
*
* @param id
*/
public void deleteCommentById(String id) {
//调用dao
commentRepository.deleteById(id);
}
/**
* 查询所有评论
*
* @return
*/
public List findCommentList() {
//调用dao
return commentRepository.findAll();
}
/**
* 根据id查询评论
*
* @param id
* @return
*/
public Comment findCommentById(String id) {
//调用dao
return commentRepository.findById(id).get();
}
/**
* 根据父id查询分页列表
* @param parentid
* @param page
* @param size
* @return
*/
public Page findCommentListPageByParentid(String parentid, int page , int size){
return commentRepository.findByParentid(parentid, PageRequest.of(page-1,size));
}
}
//SpringBoot的Junit集成测试
@RunWith(SpringRunner.class)
//SpringBoot的测试环境初始化,参数:启动类
@SpringBootTest(classes = ArticleApplication.class)
public class CommentServiceTest {
//注入Service
@Autowired
private CommentService commentService;
/**
* 保存一个评论
*/
@Test
public void testSaveComment(){
Comment comment=new Comment();
comment.setArticleid("100000");
comment.setContent("测试添加的数据");
comment.setCreatedatetime(LocalDateTime.now());
comment.setUserid("1003");
comment.setNickname("凯撒大帝");
comment.setState("1");
comment.setLikenum(0);
comment.setReplynum(0);
commentService.saveComment(comment);
}
/**
* 查询所有数据
*/
@Test
public void testFindAll(){
List list = commentService.findCommentList();
System.out.println(list);
}
/**
* 测试根据id查询
*/
@Test
public void testFindCommentById(){
Comment comment = commentService.findCommentById("62866924ddaf63182c7b3369");
System.out.println(comment);
}
}