mongodb进行增删查改以及在Java中的操作

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档



一、Mongodb的增删查改指令(在cmd运行)

 // 创建测试数据
 db.student.insert({name:'张三',age:18,isboy:true,addr:'广州市天河区789'})
 db.student.insert({name:'李四',age:22,isboy:true,addr:'广州市天源路456'})
 db.student.insert({name:'丽丽',age:19,isboy:false,addr:'深圳市南山区'})
 db.student.insert({name:'小明',age:25,isboy:true,addr:'广州市越秀区'})
 db.student.insert({name:'Lisa',age:22,isboy:false,addr:'广州市海珠区'})
 db.student.insert({name:'李华',age:18,isboy:false,addr:'广州市海珠区'})
 
 // 查询指令
 db.student.find().pretty()
 
 // 姓名等于丽丽
 db.student.find({name:"丽丽"}).pretty()
 // 年龄等于22
 db.student.find({age:22}).pretty()
 // 性别为女
 db.student.find({isboy:false}).pretty()
 
 // 年龄小于20
 db.student.find({age:{$lt:20}}).pretty()
 
 // 年龄小于等于22
 db.student.find({age:{$lte:22}}).pretty()
 
 // 年龄大于、大于等于
 
 // 年龄22的女孩
 db.student.find({age:22, isboy:false}).pretty()
 
 // 年龄小于20的男孩
 db.student.find({age:{$lt:20}, isboy:true}).pretty()
 
 // name也是可以比较大小的 
 db.student.find({name:{$lt:"丽丽"}}).pretty()
 
 // and 可以和 等于 大等于 小等于 任意组合
 
 // 年龄等于18 或者 性别是女
 db.student.find({$or:[{age:18},{isboy:false}]}).pretty()
 
 // 年龄小于20或者大于22
 db.student.find({$or:[{age:{$lt:20}},{age:{$gt:22}}]}).pretty()
 
 // 年龄大于20或者小于22 (本身逻辑有问题)
 db.student.find({$or:[{age:{$gt:20}},{age:{$lt:22}}]}).pretty()
 
 // 年龄大于22并且小于20 (本身逻辑有问题)
 
 
 // 年龄等于18 或者 性别是女  或者是李四 
 db.student.find({$or:[{age:18},{isboy:false},{name:'李四'}]}).pretty()
 
 // 年龄小于20或者大于22  并且 男孩 
 db.student.find({isboy:true,$or:[{age:{$lt:20}},{age:{$gt:22}}]}).pretty()
 
 // 年龄大于20  张三或者李四 
 db.student.find({age:{$gt:20},$or:[{name:"张三"},{name:"李四"}]}).pretty()
 
  // 年龄小于20或者大于22 并且 张三或李四
 db.student.find({$or:[{age:{$lt:20}},{age:{$gt:22}}],  $or:[{name:"张三"},{name:"李四"}]}).pretty()
 
  db.student.insert({name:100,age:"18",isboy:false,addr:'广州市海珠区'})
  
  
  // 查询姓名是字符串的
  db.student.find({"name" : {$type : 2}}).pretty()
  db.student.find({"name" : {$type : 1}}).pretty()
  db.student.find({"age" : {$type : 'string'}}).pretty()
  db.student.find({"age" : {$type : 'double'}}).pretty()
 
 db.student.find().limit(3).pretty()
 db.student.find().limit(3).skip(4).pretty()
 
 // 根据年龄排序
 db.student.find().sort({age:1}).pretty() 
 db.student.find().sort({age:-1}).limit(3).pretty()
 
 //删除年龄字符串18 
 db.student.remove({"name":"100"})
 
 
 db.student.find().sort({isboy:1}).pretty()
 
 // 以年龄创建一个索引
 db.student.createIndex({age:1})
 
 // 查看索引
 db.student.getIndexes()
 
  // 以 年龄/性别 创建一个索引
 db.student.createIndex({age:1, isboy:-1})
 
 
 //聚操作  分组统计年龄的数量
 db.student.aggregate([{$group : {_id:"$age", num_age: {$sum : 1}}}])
 
 //计算平均年龄
 db.student.aggregate([{$group:{_id:null,"avg_age":{"$avg":"$age"}} }])
 
  db.student.aggregate([{$project:{_id:null,"avg_age":{"$avg":"$age"}} }])
 
 //筛选数据
 db.student.aggregate([{ "$match":{"age":22} } ]).pretty()
 
  db.student.aggregate([{ "$match":{"age":22 ,"isboy":true} } ]).pretty()
 
 //调整字段
  db.student.aggregate([{ $project:{"名字":"$name" ,"年龄":"$age"} } ]).pretty()
  
  db.student.aggregate([{ $project:{"_id":0,"名字":"$name" ,"年龄":"$age"} } ]).pretty()
 
 //分组
 db.student.aggregate([{$group : {"_id" : "$age"}}])
 
 db.student.aggregate([{$group : {"_id" : "$isboy"}}])
 
 //年龄去重
 db.student.distinct("name")
 db.student.distinct("age")
 db.student.distinct("isboy")
 
 //聚合操作  按性别分组,计算最大,最小,平均,总和  年龄
 
  db.student.aggregate([{ $group:{"_id":"$isboy"  ,"max_age":{"$max":"$age"} 
  ,"min_age":{"$min":"$age"}
  , "avg_age":{"$avg":"$age"} ,
  "sum_age":{"$sum":"$age"} ,
  "first_age":{"$first":"$age"} ,
  "last_age":{"$last":"$age"}}} ]).pretty()

  
 
 
 
 
 
 

二、Java中进行mongodb的增删查改

代码如下(示例):

package com.company;

import com.mongodb.MongoClient;
import com.mongodb.client.FindIterable;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoCursor;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.model.Filters;
import org.bson.Document;
import org.bson.conversions.Bson;

public class Main {
    public static void main(String[] args) {

        //连接到 mongodb 服务
        MongoClient mongoClient = new MongoClient();

        //连接到数据库
        MongoDatabase mongoDatabase = mongoClient.getDatabase("test");
        //插入数据
        insertOneDoc(mongoDatabase);
        //查询数据
        findstudents(mongoDatabase);
        //删除一条数据
        removeOneDoc(mongoDatabase);
        //更新数据
        updateOneDoc(mongoDatabase);
        
    }
    //更新数据
    private static void updateOneDoc(MongoDatabase mongoDatabase) {
        MongoCollection<Document> student = mongoDatabase.getCollection("student");
        Bson ageFilter= Filters.eq("name","丽丽");

        Document document = new Document().append("age",20);
        Document update= new Document().append("$set",document);
        student.updateOne(ageFilter,update);
    }
    //删除数据
    private static void removeOneDoc(MongoDatabase mongoDatabase) {
        MongoCollection<Document> student = mongoDatabase.getCollection("student");
        Bson bson = Filters.eq("name","小明");
        student.deleteOne(bson);
    }

    //插入数据
    private static void insertOneDoc(MongoDatabase mongoDatabase){
        MongoCollection<Document> student = mongoDatabase.getCollection("student");
        //
        Document document = new Document().append("name","周杰伦").append("age",38).append("isboy",true)
                .append("arrr","中国台湾");
        student.insertOne(document);
    }

    //查询数据
    private static void findstudents(MongoDatabase mongoDatabase){

            //获取集合
            MongoCollection<Document> student = mongoDatabase.getCollection("student");
            /*
            //增加查询条件
            Bson ageFilters = Filters.lte("age",22);
            Bson boyFilters = Filters.eq("isboy",false);
            Bson andFilters = Filters.and("age",22);
            */
            //调用集合的find方法
            FindIterable<Document> documents = student.find();

            //遍历documents
            MongoCursor<Document> iterator = documents.iterator();
            while (iterator.hasNext()) {
                System.out.println(iterator.next());
            }
        }
    }

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值