java实现MongoDB的增删改查

public class MongoTest {

    private MongoClient client = null;
    private MongoCollection<Document> collection = null;

    //测试连接数据库
    @Before
    public void connect() {
        //mongo地址
        String uri = "mongodb://127.0.0.1:27017";
        //获取到mongo 客户端
        client = MongoClients.create(uri);
        //根据数据库名称 链接到数据库
        MongoDatabase database = client.getDatabase("bigdataoss");
        //通过数据库 找到数据库下的集合(即表)
        collection = database.getCollection("aaa");
        System.out.println("链接Mongo成功");
    }

	//条件查询
    @Test
    public void findAllCollection() {
        //mongo地址
        Mongo mongo = new Mongo("localhost", 27017);
        String uri = "mongodb://127.0.0.1:27017";
        //获取到mongo 客户端
        client = MongoClients.create(uri);
        //根据数据库名称 链接到数据库
		//MongoDatabase database = client.getDatabase("bigdataoss");
        DB db = mongo.getDB("whh");
        //查询所有的聚集集合
        for (String name : db.getCollectionNames()) {
            System.out.println(name);
        }
    }

    //获取表下的所有数据
    @Test
    public void findAll() {
        //通过集合,获得表下的所有数据
        FindIterable<Document> documents = collection.find();
        //通过迭代器 遍历文档
        MongoCursor<Document> iterator = documents.iterator();
        while (iterator.hasNext()) {
            Document document = iterator.next();
            System.out.println(document);
        }
    }

    //向表中插入数据
    @Test
    public void insertOne() {
        //可以看一下Document对象 实际是个LinkedMap
        Document doc = new Document();
        doc.put("_id", "2");
        doc.put("name", "zhangsan");
        doc.put("salary", "1000");
        collection.insertOne(doc);
        System.out.println("插入一条数据成功");
    }

    //修改数据
    @Test
    public void update() {
        //根据条件选择修改的数据
        Bson filter = Filters.eq("userId", "004");
        Bson updates = Updates.combine(
                Updates.set("content", "dsadsa"),
                Updates.set("thumbUp", "fsdafaksdfb"),
                Updates.currentTimestamp("lastUpdated"));
        //ps:updateOne(匹配到多条数据,也只修改一条数据)
        //updateMany(匹配到多条数据,那么所有数据都会被更新)
        UpdateResult updateResult = collection.updateMany(filter, updates);
        System.out.println(updateResult.getModifiedCount() + "条数据更新成功");
    }

    //删除数据
    @Test
    public void deleteDocument() {
        //构造要删除的数据的条件
        Bson filter = Filters.eq("_id", "2");
        DeleteResult deleteResult = collection.deleteOne(filter);
        System.out.println(deleteResult.getDeletedCount() + "条数据被删除");
    }

    //多条件查询,并限制返回的字段
    @Test
    public void findByCondition() {
        //选择需要返回的字段
        Bson fields = Projections.fields(
                Projections.include("plantResourceId", "characterNameList"),
                Projections.excludeId()
        );
        //查询条件
        Bson filter_one = Filters.eq("plantResourceId",1);
        List<Bson> filters = new ArrayList<>();
        filters.add(filter_one);

        Bson filter = Filters.and(filters);
        //顺便使用一下count函数
        long count = collection.countDocuments(filter);
        System.out.println(count + "条数据被匹配到");
        MongoCursor<Document> cursor = collection.find(filter)
                .projection(fields)
                .sort(Sorts.descending("thumbUp"))
                .iterator();
        while (cursor.hasNext()) {
            System.out.println(cursor.next().toJson());
        }
        cursor.close();
    }

    //关闭Mongo连接,释放资源
    @After
    public void close() {
        client.close();
        System.out.println("Mongo连接已释放");
    }

 
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值