MongoDB入门

MongoDB是一种基于文档存储的NoSQL。

MongoDB的安装

https://blog.51cto.com/13641879/2141129

MongoDB Shell基本命令

https://www.cnblogs.com/clsn/p/8214194.html#auto_id_25

// 创建数据库  不存在则自动创建,没有数据则退出后删除
use test;
// 查看所有数据库
show dbs;
// 删除数据库
db.dropDatabase()
// 集合 类似关系型数据库中的表
// 查看已有集合
show collections
// 或者
show tables;
// 创建一个固定集合,大小为1024Kb,最大数量为1000条
db.createCollection("myTbl",{capped : true, autoIndexId : true, size : 1024, max:1000 })
// 删除集合
db.myTbl.drop();
// 直接往不存在的集合插入文档,则自动创建集合
db.a.insert({name:'zdq',age:'18',sex:'1'})
// 往集合中插入文档
db.a.insert({name:'mongo',age:'20',sex:'1'})
// 查询数据
db.a.find();
// 查找年龄大于19的数据
db.a.find({name:{$gt:"19"}});
// 查找年龄大于19并且性别为0的人
db.a.find({name:{$gt:"19"},sex:"0"});
// 查找年龄大于19或者性别为1的人
db.a.find({name:{$gt:"19"},$or:[{sex:"0"}]});
// 易读的方式查询文档
db.a.find().pretty();
// 更改文档,固定集合不能更改
db.a.update({name:'zdq'},{$set:{name:'mongo2'}})
// 删除文档
db.a.remove({name:"mongo2"})

Java操作MongoDB

Maven相关依赖


    org.mongodb
    mongodb-driver
    3.11.0

Java简单操作MongoDB

public class MongoUtil {

    private static final Logger LOGGER = LoggerFactory.getLogger(MongoUtil.class);

    // 获取客户端连接
    public static MongoClient getMongoClient (){
        ServerAddress serverAddress = new ServerAddress("192.168.128.131", 27017);
        List list = new ArrayList();
        list.add(serverAddress);
        MongoCredential credential = MongoCredential.createScramSha1Credential("zdq", "zdq", "123456".toCharArray());
        List credentials = new ArrayList();
        credentials.add(credential);
        return new MongoClient(list, credentials);
    }
    // 获取所有的tables
    public static void showCollection (){
        MongoClient mongoClient = getMongoClient();
        MongoDatabase db = mongoClient.getDatabase("zdq");
        //db.createCollection("passport");
        MongoIterable tables = db.listCollectionNames();
        MongoCursor cursor = tables.iterator();
        while (cursor.hasNext()){
            LOGGER.info(cursor.next());
        }
    }
    // 获取passport下面的所有数据
    public static void showDataList (){
        MongoClient mongoClient = getMongoClient();
        MongoDatabase db = mongoClient.getDatabase("zdq");
        MongoCollection collection = db.getCollection("passport");
        FindIterable documents = collection.find();
        MongoCursor mongoCursor = documents.iterator();
        while (mongoCursor.hasNext()) {
            Document doc = mongoCursor.next();
            LOGGER.info(doc.toJson());
        }
    }
    // 往passport添加数据
    public static void saveData (){
        MongoClient mongoClient = getMongoClient();
        MongoDatabase db = mongoClient.getDatabase("zdq");
        MongoCollection collection = db.getCollection("passport");
        Map map = new HashMap<>();
        map.put("name", "lucy");
        map.put("age", "23");
        Document document = new Document(map);
        collection.insertOne(document);
    }
    // 查找数据
    public static void findData(){
        MongoClient mongoClient = getMongoClient();
        MongoDatabase db = mongoClient.getDatabase("zdq");
        MongoCollection collection = db.getCollection("passport");
        FindIterable documents = collection.find(Filters.gt("age", "23"));
        MongoCursor mongoCursor = documents.iterator();
        while (mongoCursor.hasNext()) {
            Document doc = mongoCursor.next();
            LOGGER.info(doc.toJson());
        }
    }
    // 修改数据
    public static void updateDate(){
        MongoClient mongoClient = getMongoClient();
        MongoDatabase db = mongoClient.getDatabase("zdq");
        MongoCollection collection = db.getCollection("passport");
        Map map = new HashMap<>();
        map.put("name", "lancy");
        map.put("age", 17);
        map.put("sex", "1");
        UpdateResult updateResult = collection.updateMany(new Document("name", "jack"), new Document("$set", new Document(map)));
        LOGGER.info("matchedCount:" + updateResult.getMatchedCount() + " modifiedCount:" + updateResult.getModifiedCount());
    }

    public static void main (String[] args){
        showDataList();
    }
}

SpringBoot整合MongoDB 使用MongoTemplate

Maven相关依赖


    org.springframework.boot
    spring-boot-starter-data-mongodb

yml配置文件

spring:
  data:
    mongodb:
      uri: mongodb://zdq:[email protected]:27017/zdq  #这里使用了权限认证

定义一个UserInfo对象存储到MongoDB

@Data
@ToString
@Document(collection = "userInfo")  //指定默认的保存的集合
public class UserInfo implements Serializable {

private static final long serialVersionUID = -4709412514538567218L;

@Id // MongoDB存储的文档必须有一个唯一的"_id"值,没有指定则会自动生成
private String id;
private String username;
private Integer age;
private Integer sex;
}

插入数据可用insert或者save。save语句如果原数据_id已经存在那么就相当于update操作,否则为insert操作。

        UserInfo userInfo = new UserInfo();
        userInfo.setUsername("sunhonglei");
        userInfo.setAge(50);
        userInfo.setSex(1);
        mongoTemplate.save(userInfo);
//        mongoTemplate.insert(userInfo);

指定条件查询

        // 查找性别为男并且年龄大于20的用户信息
        Query query = new Query();
        query.addCriteria(Criteria.where("sex").is(1).and("age").gt(20));
        List list = mongoTemplate.find(query, UserInfo.class);
        for (UserInfo u : list){
            logger.info(u.toString());
        }

修改语句

        Query query = new Query();
        query.addCriteria(Criteria.where("_id").is("zhangxueyou11111"));
        Update update = Update.update("age", 55);
        UpdateResult updateResult = mongoTemplate.updateFirst(query, update, UserInfo.class);
        logger.info("matchedCount: " + updateResult.getMatchedCount() + " modifiedCount: " + updateResult.getModifiedCount());

删除语句,删除id为zhangxueyou11111的文档

        Query query = new Query();
        query.addCriteria(Criteria.where("_id").is("zhangxueyou11111"));
        DeleteResult deleteResult = mongoTemplate.remove(query, UserInfo.class);
        logger.info("deletedCount: " + deleteResult.getDeletedCount());

你可能感兴趣的:(MongoDB入门)