jar包依赖和 官方文档 https://docs.mongodb.com/manual/reference/program/mongo/
The MongoClient
instance represents a pool of connections to the database; you will only need one instance of class MongoClient
even with multiple threads.
一个MongoClient实例是一个连接池,程序中只需要使用一个就够了。
JavaDriver:
import com.mongodb.client.*;
import com.mongodb.client.model.Filters;
import com.mongodb.client.result.UpdateResult;
import org.bson.Document;
import java.util.ArrayList;
import java.util.List;
import java.util.function.Consumer;
public class TestDB {
public static void main(String [] args)
{
// MongoClient client = MongoClients.create();
// MongoClient client = MongoClients.create(MongoClientSettings.builder().applyToClusterSettings(
// builder->builder.hosts(Arrays.asList(new ServerAddress("localhost", 27017)))
// ).build());
MongoClient client = MongoClients.create("mongodb://localhost:27017");
MongoDatabase testDB = client.getDatabase("test");
MongoCollection<Document> userCollection = testDB.getCollection("userTable");
// 表不需要主动创建
userCollection.drop();
Document oneUser = new Document("name", " WangMing")
.append("age", 22)
.append("info", new Document("tel", "123456789").append("email", "11@qq.com"));
// 插入一条数据
userCollection.insertOne(oneUser);
List<Document> documents = new ArrayList<Document>();
for (int i =0; i<3; i++)
{
// 一组包含相同键值的数据
documents.add(new Document("key_i", i));
}
MongoCollection<Document> demoCollection = testDB.getCollection("demoTable");
demoCollection.drop();
// 按顺序插入多条数据
demoCollection.insertMany(documents);
System.out.println(demoCollection.countDocuments());
// .find().first() 无记录的情况下,first返回值为空,find返回值不为空,不必担心空指针
Document firstDoc = userCollection.find().first();
// toString 方法返回的不是json串
System.out.println(firstDoc.toJson());
System.out.println(" toString 方法返回的不是json串 ");
System.out.println(firstDoc.toString());
System.out.println("查询数据并遍历 ");
MongoCursor<Document> cursor = demoCollection.find().iterator();
while(cursor.hasNext()){
System.out.println(cursor.next().toJson());
}
cursor.close();
for (Document cur: demoCollection.find()){
System.out.println(cur.toJson());
}
System.out.println(" the value type of key_i is int ");
Document second = demoCollection.find(Filters.eq("key_i", 2)).first();
System.out.println(second.toJson());
System.out.println("//把int 2 更新为string 2 ");
// Use Update Operators such as $set, $unset, or $rename.
demoCollection.updateOne(Filters.eq("key_i", 2), new Document("$set", new Document("key_i", "2") ) );
Document updated = demoCollection.find(Filters.eq("key_i", "2")).first();
System.out.println(" 更新后 数值是String 类型 ");
System.out.println(updated.toJson());
System.out.println("// second 变量是旧数据");
System.out.println(second.toJson());
UpdateResult updateResult = demoCollection.updateMany(Filters.eq("key_i", 1),
new Document().append("$set", new Document().append("key_i", "1")));
System.out.println(updateResult.getModifiedCount());
Consumer<Document> consumer = new Consumer<Document>() {
@Override
public void accept(Document document) {
System.out.println(document.toJson());
}
};
System.out.println("next print string values");
demoCollection.find(Filters.gt("i", 0)).forEach(consumer);
}
}