您的位置 首页 java

MongnDB的学习,java操作MongoDB

新建一个Maven工程

添加mongodb的Java驱动依赖

 <dependency>
 <groupId>org.mongodb</groupId>
 <artifactId>mongo- java -driver</artifactId>
 <version>3.5.0</version>
</dependency>  

3.5版本支持:

1. 加入了对pojo的支持;

2. 增强对json的支持;

3. mongodb原生客户端支持两种document和pojo模式的开发;

还添加了单元测试和日志相关的依赖。

 哦      <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>

  <!-- 日志相关依赖 -->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.7.10</version>
        </dependency>
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <version>1.1.2</version>
        </dependency>
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-core</artifactId>
            <version>1.1.2</version>
        </dependency>  

在mongodb中的mydb数据库中,插入 users 集合,users集合中有许多的文档。代码如下:

 private static final Logger logger = LoggerFactory.getLogger(JavaDocTest.class);

    private MongoDatabase db;

    private MongoCollection<Document> doc;

    private MongoClient client;

    @Before
    public void init(){
    client = new MongoClient("192.168.0.106",27022);
    db =client.getDatabase("mydb");
    doc = db.getCollection("users");
    }

    @Test
    public void insertDemo(){
logger.info("=============开始==================");
    Document doc1 = new Document();
    doc1.append("name", "Mr Wang");
    doc1.append("sex", "男");
    doc1.append("age", 33);
    doc1.append("height", 1.70f);
  doc1.append("education", "教授");
    doc1.append("salary", new BigDecimal("10000.56"));

     Map <String, String>  address 1 = new HashMap<String, String>();
    address1.put("province", "taiwan");
  address1.put("city", "taibei");
  address1.put("street", "人民广场XXX街道");
    doc1.append("address", address1);

    Map<String,  Object > favorites1 = new HashMap<String, Object>();
    favorites1.put("movies", Arrays.asList("苍老师","波多也吉衣"));
    favorites1.put("others", Arrays.asList("爬窗户","门口闲逛"));
    doc1.append("favorites", favorites1);

    Document doc2  = new Document();
    doc2.append("name", "Mr Li");
    doc2.append("sex", "男");
    doc2.append("age", 30);
    doc2.append("height", 1.73f);
  doc1.append("education", "硕士");
    doc2.append("salary", new BigDecimal("12000.45"));
    Map<String, String> address2 = new HashMap<>();
  address2.put("province", "beijing");
  address2.put("city", "beijing");
  address2.put("street", "中关村");
  doc2.append("address", address2);
    Map<String, Object> favorites2 = new HashMap<>();
    favorites2.put("java", Arrays.asList("看代码","写代码"));
    favorites2.put("book", Arrays.asList("从入门到放弃","删库跑路","颈椎病康复之路","佛学","永生"));
    doc2.append("favorites", favorites2);

    doc.insertMany(Arrays.asList(doc1,doc2));

  logger.info("=============数据插入完毕==================");
    }  

这是查询数据库,数据已被插入。

查询刚才插入的数据:

 @Test
public void testFind(){
final List<Document> ret = new ArrayList<>();

Block<Document> printBlock = new Block<Document>() {
@Override
public void apply(Document t) {
logger.info("document:"+t.toJson());
ret.add(t);
}

};
//select * from users  where favorites.java 同时拥有 "看代码"、"写代码"
FindIterable<Document> find = doc.find(all("favorites.java", Arrays.asList("看代码","写代码")));
find.forEach(printBlock);
logger.info("count:"+String.valueOf(ret.size()));
ret.removeAll(ret);


//select * from users  where username like '%Wang%' and (education= '本科' or contry = '硕士')
String regexStr = ".*Wang.*";
Bson regex = regex("name", regexStr);
Bson or = or(eq("education","本科"),eq("education","硕士"));
FindIterable<Document> find2 = doc.find(and(regex,or));
find2.forEach(printBlock);
logger.info("count:"+String.valueOf(ret.size()));

}  

删除数据:

     @Test
    public void testDelete(){

    //delete from users where name = 'Mr Wang'
    DeleteResult deleteMany = doc.deleteMany(eq("name", "Mr Wang"));
    logger.info("result1:"+String.valueOf(deleteMany.getDeletedCount()));

    //delete from users where age >8 and age <25
    DeleteResult deleteMany2 = doc.deleteMany(and(gt("age",8),lt("age",25)));
    logger.info("result2:"+String.valueOf(deleteMany2.getDeletedCount()));
    }  

更新数据:

     @Test
    public void testUpdate(){
    //update  users  set age=32 where username = 'Mr Li'
    UpdateResult updateMany = doc.updateMany(eq("name", "Mr Li"),
                      new Document("$set",new Document("age",32)));
    logger.info("result1:"+String.valueOf(updateMany.getModifiedCount()));

    //更新user中的favorites.book,添加"如何防止猝死", "中年危机怎么办"两条数据,当favorites.book in('删库跑路','佛学')
    UpdateResult updateMany2 = doc.updateMany(in("favorites.book", "删库跑路","佛学"),
                                      addEachToSet("favorites.book", Arrays.asList( "如何防止猝死", "中年危机怎么办")));
    logger.info("result2:"+String.valueOf(updateMany2.getModifiedCount()));
    }
  

当然也可以使用POJO,new出插入数据的对象,将属性设置进去,在这里不继续介绍了。

文章来源:智云一二三科技

文章标题:MongnDB的学习,java操作MongoDB

文章地址:https://www.zhihuclub.com/197490.shtml

关于作者: 智云科技

热门文章

网站地图