public class MyMongo{
private void test() {
// 1.获取连接:MongoClient
MongoCredential credential = MongoCredential.createCredential("user","database","password".toCharArray()); //(user,database,password)
MongoClient mongoClient = new MongoClient(new ServerAddress("192.168.6.186", 27017), Arrays.asList(credential));
// 2.获取数据库:MongoDatabase
MongoDatabase database = mongoClient.getDatabase("mydb");
//3. 进入某个文档集:MongoCollection
MongoCollection<Document> collection = database.getCollection("test");
//4.插入数据:insertOne(),insertMany()
Document doc = new Document("name", "MongoDB")
.append("type", "database").append("count", 1)
.append("info", new Document("x", 203).append("y", 102));
collection.insertOne(doc);
List<Document> documents = new ArrayList<Document>();
for (int i = 0; i < 100; i++) {
documents.add(new Document("i", i));
}
collection.insertMany(documents);
//5.读取数据
System.out.println(collection.count());
Document myDoc = collection.find().first();
System.out.println(myDoc.toJson());
//①读取全部数据
MongoCursor<Document> cursor = collection.find().iterator();
try {
while (cursor.hasNext()) {
System.out.println(cursor.next().toJson());
}
} finally {
cursor.close();
}
//②读取全部数据的另一种方法
for (Document cur : collection.find()) {
System.out.println(cur.toJson());
}
//③ 根据条件获取某部分文档
Document myDoc = collection.find(eq("i", 71)).first();
System.out.println(myDoc.toJson());
// ④通过查询语句一次性获取多个数据
Block<Document> printBlock = new Block<Document>() {
@Override
public void apply(final Document document) {
System.out.println(document.toJson());
}
};
// 获得所有大于50的
collection.find(gt("i", 50)).forEach(printBlock);
// 大于50 小于 100
collection.find(and(gt("i", 50), lte("i", 100))).forEach(printBlock);
// 对输出文档进行排序,-1为递减,1为递增
Document myDoc = collection.find(exists("i"))
.sort(new BasicDBObject("i", -1)).first();
System.out.println(myDoc.toJson());
// 选择性输出结果中的元素,0为不显示,1为显示
BasicDBObject exclude = new BasicDBObject();
exclude.append("_id", 0);
exclude.append("count", 0);
exclude.append("name", 1);
exclude.append("info", 1);
Document myDoc = collection.find().projection(exclude).first();
System.out.println(myDoc.toJson());
//6.修改数据库中的数据
// $inc 对指定的元素加
// $mul 乘
// $rename 修改元素名称
// $setOnInsert 如果以前没有这个元素则增加这个元素,否则不作任何更改
// $set 修改指定元素的值
// $unset 移除特定的元素
// $min 如果原始数据更大则不修改,否则修改为指定的值
// $max 与$min相反
// $currentDate 修改为目前的时间
collection.updateOne(eq("i", 10), new Document("$set", new Document("i", 110)));
// 获取全部文档,可以看到以前10的地方变成了110
for (Document cur : collection.find()) {
System.out.println(cur.toJson());
}
// 批量修改数据并且返回修改的结果,将所有小于100的结果都加100
UpdateResult updateResult = collection.updateMany(lt("i", 100), new Document("$inc", new Document("i", 100)));
// 显示发生变化的行数
System.out.println(updateResult.getModifiedCount());
//获取全部文档,可以看到除了刚才修改的110其他的全为了100
for (Document cur : collection.find()) {
System.out.println(cur.toJson());
}
//7.删除数据
// 删除第一个符合条件的数据
collection.deleteOne(eq("i", 110));
//获取全部文档,可以看到没有110这个数了
// 删除所有符合条件的数据,并且返回结果
DeleteResult deleteResult = collection.deleteMany(gte("i", 100));
// 输出删除的行数
System.out.println(deleteResult.getDeletedCount());
//获取全部文档,所有i>=100的数据都没了
//8. 程序块,一次执行多条语句
// 按照语句先后顺序执行
collection.bulkWrite(Arrays.asList(new InsertOneModel<>(new Document("_id", 4)),
new InsertOneModel<>(new Document("_id", 5)),new InsertOneModel<>(new Document("_id", 6)),
new UpdateOneModel<>(new Document("_id", 1), new Document("$set", new Document("x", 2))),
new DeleteOneModel<>(new Document("_id", 2)),new ReplaceOneModel<>(new Document("_id", 3),
new Document("_id", 3).append("x", 4))));
// 不按照语句先后顺序执行
collection.bulkWrite(Arrays.asList(new InsertOneModel<>(new Document("_id", 4)),
new InsertOneModel<>(new Document("_id", 5)), new InsertOneModel<>(new Document("_id", 6)),
new UpdateOneModel<>(new Document("_id", 1), new Document("$set", new Document("x", 2))),
new DeleteOneModel<>(new Document("_id", 2)),new ReplaceOneModel<>(new Document("_id", 3),
new Document("_id", 3).append("x", 4))), new BulkWriteOptions().ordered(false));
// 关闭数据库连接
mongoClient.close();
}
public static void main(String[] args) {
MyMongo mymongo= new MyMongo();
mymongo.test();
}
}
MongoDB_Java操作实例
最新推荐文章于 2021-08-01 23:52:30 发布