一、Java原生客户端
1、jar
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/db3b349bf781941d4a84d85d7897f818.png)
2、快速入门
package com.enjoylearning.mongo.test;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.bson.Document;
import org.bson.conversions.Bson;
import org.junit.Before;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.mongodb.Block;
import com.mongodb.MongoClient;
import com.mongodb.client.FindIterable;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.result.DeleteResult;
import com.mongodb.client.result.UpdateResult;
import static com.mongodb.client.model.Updates.*;
import static com.mongodb.client.model.Filters.*;
public class QuickStartJavaDocTest {
private static final Logger logger = LoggerFactory.getLogger(QuickStartJavaDocTest.class);
private MongoDatabase db;
private MongoCollection<Document> doc;
private MongoClient client;
@Before
public void init(){
client = new MongoClient("192.168.29.128",27022);
db =client.getDatabase("lison");
doc = db.getCollection("users");
}
@Test
public void insertDemo(){
Document doc1 = new Document();
doc1.append("username", "cang");
doc1.append("country", "USA");
doc1.append("age", 20);
doc1.append("lenght", 1.77f);
doc1.append("salary", new BigDecimal("6565.22"));
Map<String, String> address1 = new HashMap<String, String>();
address1.put("aCode", "0000");
address1.put("add", "xxx000");
doc1.append("address", address1);
Map<String, Object> favorites1 = new HashMap<String, Object>();
favorites1.put("movies", Arrays.asList("aa","bb"));
favorites1.put("cites", Arrays.asList("东莞","东京"));
doc1.append("favorites", favorites1);
Document doc2 = new Document();
doc2.append("username", "Chen");
doc2.append("country", "China");
doc2.append("age", 30);
doc2.append("lenght", 1.77f);
doc2.append("salary", new BigDecimal("8888.22"));
Map<String, String> address2 = new HashMap<>();
address2.put("aCode", "411000");
address2.put("add", "我的地址2");
doc2.append("address", address2);
Map<String, Object> favorites2 = new HashMap<>();
favorites2.put("movies", Arrays.asList("东游记","一路向东"));
favorites2.put("cites", Arrays.asList("珠海","东京"));
doc2.append("favorites", favorites2);
doc.insertMany(Arrays.asList(doc1,doc2));
}
@Test
public void testFind(){
final List<Document> ret = new ArrayList<>();
Block<Document> printBlock = new Block<Document>() {
@Override
public void apply(Document t) {
logger.info(t.toJson());
ret.add(t);
}
};
Bson all = all("favorites.cites", Arrays.asList("东莞","东京"));
FindIterable<Document> find = doc.find(all);
find.forEach(printBlock);
logger.info("------------------>"+String.valueOf(ret.size()));
ret.removeAll(ret);
String regexStr = ".*s.*";
Bson regex = regex("username", regexStr);
Bson or = or(eq("country","English"),eq("country","USA"));
Bson and = and(regex,or);
FindIterable<Document> find2 = doc.find(and);
find2.forEach(printBlock);
logger.info("------------------>"+String.valueOf(ret.size()));
}
@Test
public void testUpdate(){
Bson eq = eq("username", "lison");
Bson set = set("age", 8);
UpdateResult updateMany = doc.updateMany(eq, set);
logger.info("------------------>"+String.valueOf(updateMany.getModifiedCount()));
Bson eq2 = eq("favorites.cites", "东莞");
Bson addEachToSet = addEachToSet("favorites.movies", Arrays.asList( "小电影2 ", "小电影3"));
UpdateResult updateMany2 = doc.updateMany(eq2, addEachToSet);
logger.info("------------------>"+String.valueOf(updateMany2.getModifiedCount()));
}
@Test
public void testDelete(){
Bson eq = eq("username", "lison");
DeleteResult deleteMany = doc.deleteMany(eq);
logger.info("------------------>"+String.valueOf(deleteMany.getDeletedCount()));
Bson gt = gt("age",8);
Bson lt = lt("age",25);
Bson and = and(gt,lt);
DeleteResult deleteMany2 = doc.deleteMany(and);
logger.info("------------------>"+String.valueOf(deleteMany2.getDeletedCount()));
}
}
2.1、pojo方式
package com.enjoylearning.mongo.test;
import static com.mongodb.client.model.Updates.*;
import static com.mongodb.client.model.Filters.*;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import org.bson.Document;
import org.bson.codecs.configuration.CodecRegistries;
import org.bson.codecs.configuration.CodecRegistry;
import org.bson.codecs.pojo.PojoCodecProvider;
import org.bson.conversions.Bson;
import org.junit.Before;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.enjoylearning.mongo.entity.Address;
import com.enjoylearning.mongo.entity.Favorites;
import com.enjoylearning.mongo.entity.User;
import com.mongodb.Block;
import com.mongodb.MongoClient;
import com.mongodb.MongoClientOptions;
import com.mongodb.ServerAddress;
import com.mongodb.client.FindIterable;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.model.Filters;
import com.mongodb.client.model.Updates;
import com.mongodb.client.result.DeleteResult;
import com.mongodb.client.result.UpdateResult;
public class QuickStartJavaPojoTest {
private static final Logger logger = LoggerFactory.getLogger(QuickStartJavaPojoTest.class);
private MongoDatabase db;
private MongoCollection<User> doc;
private MongoClient client;
@Before
public void init(){
List<CodecRegistry> codecResgistes = new ArrayList<>();
codecResgistes.add(MongoClient.getDefaultCodecRegistry());
CodecRegistry pojoCodecRegistry = CodecRegistries.
fromProviders(PojoCodecProvider.builder().automatic(true).build());
codecResgistes.add(pojoCodecRegistry);
CodecRegistry registry = CodecRegistries.fromRegistries(codecResgistes);
MongoClientOptions build = MongoClientOptions.builder().
codecRegistry(registry).build();
ServerAddress serverAddress = new ServerAddress("192.168.29.128",27022);
client = new MongoClient(serverAddress, build);
db =client.getDatabase("lison");
doc = db.getCollection("users",User.class);
}
@Test
public void insertDemo(){
User user = new User();
user.setUsername("cang");
user.setCountry("USA");
user.setAge(20);
user.setLenght(1.77f);
user.setSalary(new BigDecimal("6265.22"));
Address address1 = new Address();
address1.setaCode("411222");
address1.setAdd("sdfsdf");
user.setAddress(address1);
Favorites favorites1 = new Favorites();
favorites1.setCites(Arrays.asList("东莞","东京"));
favorites1.setMovies(Arrays.asList("西游记","一路向西"));
user.setFavorites(favorites1);
User user1 = new User();
user1.setUsername("chen");
user1.setCountry("China");
user1.setAge(30);
user1.setLenght(1.77f);
user1.setSalary(new BigDecimal("6885.22"));
Address address2 = new Address();
address2.setaCode("411000");
address2.setAdd("我的地址2");
user1.setAddress(address2);
Favorites favorites2 = new Favorites();
favorites2.setCites(Arrays.asList("珠海","东京"));
favorites2.setMovies(Arrays.asList("东游记","一路向东"));
user1.setFavorites(favorites2);
doc.insertMany(Arrays.asList(user,user1));
}
@Test
public void testFind(){
final List<User> ret = new ArrayList<>();
Block<User> printBlock = new Block<User>() {
@Override
public void apply(User t) {
System.out.println(t.toString());
ret.add(t);
}
};
Bson all = all("favorites.cites", Arrays.asList("东莞","东京"));
FindIterable<User> find = doc.find(all);
find.forEach(printBlock);
logger.info("------------------>"+String.valueOf(ret.size()));
ret.removeAll(ret);
String regexStr = ".*s.*";
Bson regex = regex("username", regexStr);
Bson or = or(eq("country","English"),eq("country","USA"));
FindIterable<User> find2 = doc.find(and(regex,or));
find2.forEach(printBlock);
logger.info("------------------>"+String.valueOf(ret.size()));
}
@Test
public void testUpdate(){
Bson eq = eq("username", "lison");
Bson set = set("age", 8);
UpdateResult updateMany = doc.updateMany(eq, set);
logger.info("------------------>"+String.valueOf(updateMany.getModifiedCount()));
Bson eq2 = eq("favorites.cites", "东莞");
Bson addEachToSet = addEachToSet("favorites.movies", Arrays.asList( "小电影2 ", "小电影3"));
UpdateResult updateMany2 = doc.updateMany(eq2, addEachToSet);
logger.info("------------------>"+String.valueOf(updateMany2.getModifiedCount()));
}
@Test
public void testDelete(){
Bson eq = eq("username", "lison");
DeleteResult deleteMany = doc.deleteMany(eq);
logger.info("------------------>"+String.valueOf(deleteMany.getDeletedCount()));
Bson gt = gt("age",8);
Bson lt = lt("age",25);
Bson and = and(gt,lt);
DeleteResult deleteMany2 = doc.deleteMany(and);
logger.info("------------------>"+String.valueOf(deleteMany2.getDeletedCount()));
}
}
3、查询
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/14f543b27cbe3af21d17ceb364008d5e.png)
package com.enjoylearning.lison.mongodb;
import static com.mongodb.client.model.Filters.*;
import static com.mongodb.client.model.Projections.*;
import static com.mongodb.client.model.Sorts.*;
import static com.mongodb.client.model.Aggregates.*;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import javax.annotation.Resource;
import org.bson.BSON;
import org.bson.BsonDocument;
import org.bson.Document;
import org.bson.codecs.configuration.CodecRegistries;
import org.bson.codecs.configuration.CodecRegistry;
import org.bson.codecs.pojo.PojoCodecProvider;
import org.bson.conversions.Bson;
import org.junit.Before;
import org.junit.Test;
import org.junit