使用mongodb

SpringBoot集成mongodb

  • 添加maven依赖
    1
    2
    3
    4
    <dependency>
    <groupId>org.springframework.bootgroupId>
    <artifactId>spring-boot-starter-data-mongodbartifactId>
    dependency>
  • 连接配置
    下列配置包含集群与非集群,具体含义可以自行百度。

    1
    2
    3
    4
    5
    6
    spring:
    profiles: jiaowu
    data:
    mongodb:
    uri: mongodb://jiaoxueUser:fieXeiCh4Uqu@dds-uf6177cc6dec7d741.mongodb.rds.aliyuncs.com:3717,dds-uf6177cc6dec7d742.mongodb.rds.aliyuncs.com:3717/jiaoxue?authSource=jiaoxue;replicaSet=mgset-5439253
    #uri: mongodb://jiaoxueUser:fieXeiCh4Uqu@dds-uf6177cc6dec7d741.mongodb.rds.aliyuncs.com:3717/jiaoxue?authSource=jiaoxue
  • 现在可以美滋滋的使用MongoTemplate了

mongoDb使用mongoexport导出

mongoexport关键参数介绍

  • -h,–host :代表远程连接的数据库地址,默认连接本地Mongo数据库;
  • –port:代表远程连接的数据库的端口,默认连接的远程端口27017;
  • -u,–username:代表连接远程数据库的账号,如果设置数据库的认证,需要指定用户账号;
  • -p,–password:代表连接数据库的账号对应的密码;
  • -d,–db:代表连接的数据库;
  • -c,–collection:代表连接数据库中的集合;
  • -f, –fields:代表集合中的字段,可以根据设置选择导出的字段;
  • –type:代表导出输出的文件类型,包括csv和json文件;
  • -o, –out:代表导出的文件名;
  • -q, –query:代表查询条件;
  • –skip:跳过指定数量的数据;
  • –limit:读取指定数量的数据记录;
  • –sort:对数据进行排序,可以通过参数指定排序的字段,并使用 1 和 -1 来指定排序的方式,其中 1 为升序排列,而-1是用于降序排列,如sort({KEY:1})。

windows安装mongodb

有linux的真不推荐在windows上装mongodb,因为太多坑了。linux安装我就不说了,直接上windows的安装步骤吧。

下载安装

第一坑来了,只要安装3.4以上的版本,就会一直卡住安装不了,所以还是乖乖的安装mongodb3.4以下的吧,点击这里下载

配置

然后配置又是问题
参考http://www.cnblogs.com/lsc183/archive/2012/08/16/mongodb.html 才配好。

1 添加安装路径到path环境变量: C:\Program Files\MongoDB\Server\3.4\bin

2 创建两个文件夹 D:\mongodb\data D:\mongodb\data\logs

3 创建服务(开机自启动) win+R cmd启动控制台
cd C:\Program Files\MongoDB\Server\3.4\bin
mongod.exe –dbpath=D:\mongodb\data –logpath=D:\mongodb\logs\mongodb.log –install

4 启动服务 net start mongodb

5 在浏览器 输入 http://localhost:27017/

看见
It looks like you are trying to access MongoDB over HTTP on the native driver port.

表示成功

MongoDb聚合

去这个网站学习下语法:http://www.runoob.com/mongodb/mongodb-aggregate.html

MongoDb实战

记录一些遇到坑的解决方案。

添加时区

由于mongodb的问题,通过程序传进来的日期会有时区问题,所以需要在程序中处理时区问题。

1
sdf.setCalendar(new GregorianCalendar(new SimpleTimeZone(0, "GMT")));

通过某些条件将B属性转换到A属性

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
db.getCollection('questionInfo').find({
"$and": [{
"question.isenabled": true
},
{
"question.virtual": 0
},
{
"content.questionid": {
"$exists": true
}
},
{
"question.score": {
"$gt": 0
}
},
{
"evaluations.questionId": {
"$exists": true
}
},
{
"question.audituser": {
"$exists": true
}
}
]
}).forEach(function(u) {
if(u.question.addLabelDate == null){
var date = u.question.updateDate;
if(date != null){
db.getCollection('questionInfo').update({"_id":u._id},{$set:{"question.addLabelDate": date}})
}else{
db.getCollection('questionInfo').update({"_id":u._id},{$set:{"question.addLabelDate": u.question.createTime}})
}
}
});
0%