因为平常用到的都是Mysql关系数据库,所以记录一下使用java对mongodb数据库进行基本操作的方法,便于以后捡起来。
public class UseJavaToMongodb
{
//mongodb保存的数据和关系数据库不同,保存的是文档类型(bson笔者导出数据到Excel就涉及到了这个格式)
//与json格式相同,都是键值对信息,比如关系数据库里面保存一个人的信息,表里面有name,age,gender,address等字段
//在mongodb里面就是一个文档,文档格式就是{"_id":"xxxxxxx","name":"xxx","age":16,"gender":"男","address":"xxxx"}
//_id这个字段是mongodb自动生成的,为什么mongodb保存数据量很大,但是查询很快,就是因为这个字段,他相当于map里面的键
//根据这个_id字段可以唯一确定一个文档,同时注意这个_id的类型是ObjectId类型,不是普通的字符串类型
//mongodb的集合,具体集合需要自己链接获取,这里就不写明了
private MongoCollection<Document> collection;
//查询
//一个条件
BasicDBObject oneCondition = new BasicDBObject();
oneCondtion.append("_id", new ObjectId("xxxx"));
collection.find(oneCondition);
//查询
//多个条件,and或者or
BasicDBObject conditions = new BasicDBObject();
BasicDBList conditionList = new BasicDBList();
BasicDBObject condition1 = new BasicDBObject();
BasicDBObject condition2 = new BasicDBObject();
BasicDBObject condition3 = new BasicDBObject();
condition1.append("", "");
condition2.append("", "");
condition3.append("", "");
conditionList.add(condition1);
conditionList.add(condition2);
conditionList.add(condition3);
conditions.put("$and", conditionList);
Collection.find(conditions);
//删除一个文档
Document query = new Document();
query.put("_id", new ObjectId("xxxx"));
collection.deleteOne(query);
//保存文档
Document data = new Document();
data.append("", "")
.append("", "")
.append("", "")
.append("", "")
.append("", "")
.append("", "")
.append("", "")
.append("", "")
collection.insertOne(data);
//更新一个文档的一个或多个字段
//查找更新文档的条件(如果根据这个条件找到多条记录,只更新第一个,但是可以设置参数,更新所有的记录)
Document searchQuery = new Document().append("_id", new ObjectId("xxxxxx"));
//需要修改的字段和修改之后字段的值都写在这个Document里面
Document updateDocument = new Document();
//mongodb更新字段用关键字$set,然后在后面加更新的字段的信息
//这里注意使用了俩个Document来执行更新命令;
//如果只用一个Document,把$set和需要更新的所有字段和字段的值全放在一个Document里面,那么最后只会更新一个字段的值,就是最后一个字段的值
//笔者最开始也遇到了这个坑,目前还没深入了解
Document updateDocumentAll = new Document();
updateDocument.append("":"")
.append("", "")
.append("", "")
.append("", "")
.append("", "")
.append("", "")
.append("", "")
updateDocumentAll.put("$set", updateDocument);
collection.updateOne(searchQuery, updateDocumentAll);
//关于mongodb里面数组形式的获取
Document exampleDoc = iterator.next();
Object arrayType = exampleDoc.get("array");
if (arrayType instanceof List)
{
@SuppressWarnings("unchecked")
List<String> test = (List<String>) arrayType;
}
//mongodb嵌套字段的获取,比如一个doc里面有一个info字段,info里面还有其他很多字段,
//然后获取info里面某个字段的值
Document testDoc = iterator.next();
Document secDoc = (Document) testDoc.get("info");
String testString = secDoc.getString("xxx");
}
---------------------
【转载,仅作分享,侵删】
作者:m0_37872413
原文:https://blog.csdn.net/m0_37872413/article/details/86776112
版权声明:本文为博主原创文章,转载请附上博文链接!
|
|