MongoDB学习笔记
程序员文章站
2024-01-23 10:11:34
...
1.MongoDB目录结构
MongoDB由:
文档(document)、集合(collection)、数据库(database)这三部分组成的。
(1)MongoDB 的文档(document),相当于关系数据库中的一行记录。
(2)多个文档组成一个集合(collection),相当于关系数据库的表。
(3)多个集合(collection),逻辑上组织在一起,就是数据库(database)。
(4)一个 MongoDB 实例支持多个数据库(database)。
2.MongoDB安装使用
windows下
(1)将 C:\ProgramFiles\MongoDB\Server\3.2\bin 设置到环境变量 path 中。
(2)cmd启动服务 mongod --dbpath=d:\data,先创建一个data目录用于存放数据
(3)另开一个cmd,输入mongo连接,如果连接服务器,就mongo ip地址。
3.MongoDB常用命令
use 数据库名称 | 选择和创建数据库 |
db.集合名称.insert(数据); | 插入和查询文档 |
db.集合名称.find() | 查询集合的语法格式: |
db.集合名称.find( 条件 ) | 按条件来查询 |
db.集合名称.update(条件,修改后的数据) | 修改文档 |
db.集合名称.remove(条件) | 删除文档 |
db.spit.count() | 统计条数 |
db.集合名称.find( /模糊查询字符串/ ) | 模糊查询 |
大于 小于 不等于 | |
db.集合名称.find({ "field" : { $gt: value }}) | // 大于: field > value |
db.集合名称.find({ "field" : { $lt: value }}) | // 小于: field < value |
db.集合名称.find({ "field" : { $gte: value }}) |
// 大于等于: field >= value |
db.集合名称.find({ "field" : { $lte: value }}) | // 小于等于: field <= value |
db.集合名称.find({ "field" : { $ne: value }}) | // 不等于: field != value |
包含$in与不包含$nin | |
db.spit.find({userid:{$in:["1013","1014"]}}) | db.spit.find({userid:{$nin:["1013","1014"]}}) |
条件连接$and$or | |
$and:[ { },{ },{ } ]
|
$or:[ { },{ },{ } ] |
列值增长$inc | |
db.spit.update({_id:"2"},{$inc:{visits:NumberInt(1)}} ) |
4.Java连接MongoDB
(1)创建工程 mongoDemo, 引入依赖
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongodb-driver</artifactId>
<version>3.6.3</version>
</dependency>
2)创建测试类
public class MongoDBDemo {
public static void main(String[] args) {
//1.连接mongodb
MongoClient client = new MongoClient("localhost", 27017);
//2.获取数据库(database)这
MongoDatabase spitdb = client.getDatabase("spit");
// 3.集合(collection)
MongoCollection<Document> spit = spitdb.getCollection("spit");
// 4.文档
// 4.1查询所有
FindIterable<Document> documents = spit.find();
// 4.2查询条件大于等于30 db.split.find( {"visits": {$gte:NumberInt(30)} } )
// BasicDBObject bson = new BasicDBObject("visits", new BasicDBObject("$gte",30));
// FindIterable<Document> documents = spit.find(bson);
// 4.3查询大于120并且小于1223的, db.spit.find( {$and: [{"visits": {$gt:NumberInt(120) }}, {"visits":{$lte:NumberInt(1223)}} ] })
// List<BasicDBObject> list = new ArrayList<BasicDBObject>();
// list.add(new BasicDBObject("visits", new BasicDBObject("$gt", 120)));
// list.add(new BasicDBObject("visits", new BasicDBObject("$lte", 1223)));
// BasicDBObject bson = new BasicDBObject("$and", list);
// FindIterable<Document> documents = spit.find(bson);
// 4.4插入数据
Map<String, Object> map = new HashMap<String, Object>();
map.put("_id", "5");
map.put("visits", "10086");
Document document = new Document(map);
spit.insertOne(document);
for (Document document2 : documents) {
System.out.println(document2.toString());
}
//5.关闭连接
client.close();
}
}
5.SpringDataMongoDB
1)pom.xml 依赖导入
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
2)创建 application.yml
server:
port: 9006
spring:
application:
name: tensquare-spit
data:
mongodb:
host: 127.0.0.1
port: 27017
database: spit
3)项目应用
@Autowired
private MongoTemplate mongoTemplate;
/**
* 高效率
*
* @param spitid
*/
public void thumbup(String spitid) {
//db.spit.update({"_id":"1198220881907929088"},{$inc:{"thumbup":NumberInt(1)}})
//1.构建查询对象
Query query = new Query();
query.addCriteria(Criteria.where("_id").is(spitid));
//2.构建更新对象
Update update = new Update();
update.inc("thumbup",1);
//3.mongoTemplate
mongoTemplate.updateFirst(query,update,"spit");
}
/**
* 取消点赞
* @param spitid
*/
public void cancelThumbup(String spitid) {
//1.构建查询对象
Query query = new Query();
query.addCriteria(Criteria.where("_id").is(spitid));
//2.构建更新对象
Update update = new Update();
update.inc("thumbup",-1);
//3.mongoTemplate
mongoTemplate.updateFirst(query,update,"spit");
}
上一篇: 无孔手机暂时别想了!量产难