MongoDB入门

笔记

MongoDB入门练习

 

1.数据库

2.集合

3.文档

 

使用手册:

MongoDB Collection Method(集合方法)

MongoDB CRUD操作_MonogDB 中文网

创建数据库
> use test switched to db test > show dbs admin 0.000GB config 0.000GB local 0.000GB
查看在使用的数据库
> db test
插入文档(db.collections.insertOne())
> db.users.insertOne({username:"sunwukong"}) { "acknowledged" : true, "insertedId" : ObjectId("609dc59554022b5f0668ec02") }
查看所有数据库
> show dbs admin 0.000GB config 0.000GB local 0.000GB test 0.000GB
查看所有集合
> show collections users
查看所有文档(pretty美化输出格式)
> db.user.find().pretty() > db.users.find().pretty() { "_id" : ObjectId("609dc59554022b5f0668ec02"), "username" : "sunwukong" } > db.users.insertOne({username:"zhubajie"}) { "acknowledged" : true, "insertedId" : ObjectId("609dc5ce54022b5f0668ec03") } > db.users.find().pretty() { "_id" : ObjectId("609dc59554022b5f0668ec02"), "username" : "sunwukong" } { "_id" : ObjectId("609dc5ce54022b5f0668ec03"), "username" : "zhubajie" }
查询个数
> db.users.find().count() 2
精准查询 > db.users.find({username:"sunwukong"}) { "_id" : ObjectId("609dc59554022b5f0668ec02"), "username" : "sunwukong" }
更新
> db.users.updateOne({username:"sunwukong"},{$set:{address:"huaguoshan"}}) { "acknowledged" : true, "matchedCount" : 1, "modifiedCount" : 1 } > db.users.find() { "_id" : ObjectId("609dc59554022b5f0668ec02"), "username" : "sunwukong", "address" : "huaguoshan" } { "_id" : ObjectId("609dc5ce54022b5f0668ec03"), "username" : "zhubajie" } > db.users.replaceOne({username:"zhubajie"},{usaername:"tangseng"}) { "acknowledged" : true, "matchedCount" : 1, "modifiedCount" : 1 } > db.users.find() { "_id" : ObjectId("609dc59554022b5f0668ec02"), "username" : "sunwukong", "address" : "huaguoshan" } { "_id" : ObjectId("609dc5ce54022b5f0668ec03"), "usaername" : "tangseng" } > db.users.updateOne({username:"sunwukong"},{$unset:{address:1}}) { "acknowledged" : true, "matchedCount" : 1, "modifiedCount" : 1 } > db.users.find() { "_id" : ObjectId("609dc59554022b5f0668ec02"), "username" : "sunwukong" } { "_id" : ObjectId("609dc5ce54022b5f0668ec03"), "usaername" : "tangseng" } > db.users.update({username:"sunwuikong"},{$set:{hobby:{cities:["beijing","shanghai","tianjin"],movies:["sanguo","hero"]}}) ... db.users.find() ... db.users.replaceOne({username:"zhubajie"},{usaername:"tangseng"})^C > db test > db.users.find() { "_id" : ObjectId("609dc59554022b5f0668ec02"), "username" : "sunwukong" } { "_id" : ObjectId("609dc5ce54022b5f0668ec03"), "usaername" : "tangseng" } > db.users.updateOne({username:"sunwukong"},{$set:{hobby:{cities:["beijing","tianjin"],movies:["sanguo","hero"]}}}) { "acknowledged" : true, "matchedCount" : 1, "modifiedCount" : 1 } > db.users.find() { "_id" : ObjectId("609dc59554022b5f0668ec02"), "username" : "sunwukong", "hobby" : { "cities" : [ "beijing", "tianjin" ], "movies" : [ "sanguo", "hero" ] } } { "_id" : ObjectId("609dc5ce54022b5f0668ec03"), "usaername" : "tangseng" } > db.users.find().pretty() { "_id" : ObjectId("609dc59554022b5f0668ec02"), "username" : "sunwukong", "hobby" : { "cities" : [ "beijing", "tianjin" ], "movies" : [ "sanguo", "hero" ] } } { "_id" : ObjectId("609dc5ce54022b5f0668ec03"), "usaername" : "tangseng" } > db.users.updateOne({username:"tangseng"},{$set:{hobby:{movies:["A","B"]}}}) { "acknowledged" : true, "matchedCount" : 0, "modifiedCount" : 0 } > db.users.find().pretty() { "_id" : ObjectId("609dc59554022b5f0668ec02"), "username" : "sunwukong", "hobby" : { "cities" : [ "beijing", "tianjin" ], "movies" : [ "sanguo", "hero" ] } } { "_id" : ObjectId("609dc5ce54022b5f0668ec03"), "usaername" : "tangseng" } > db.users.update({username:"tangseng"},{$set:{hobby:{movies:["A","B"]}}}) WriteResult({ "nMatched" : 0, "nUpserted" : 0, "nModified" : 0 }) > db.users.find().pretty() { "_id" : ObjectId("609dc59554022b5f0668ec02"), "username" : "sunwukong", "hobby" : { "cities" : [ "beijing", "tianjin" ], "movies" : [ "sanguo", "hero" ] } } { "_id" : ObjectId("609dc5ce54022b5f0668ec03"), "usaername" : "tangseng" } > db.users.updateOne({usaername:"tangseng"},{$set:{username:"tangseng"}}) { "acknowledged" : true, "matchedCount" : 1, "modifiedCount" : 1 } > db.users.find().pretty() { "_id" : ObjectId("609dc59554022b5f0668ec02"), "username" : "sunwukong", "hobby" : { "cities" : [ "beijing", "tianjin" ], "movies" : [ "sanguo", "hero" ] } } { "_id" : ObjectId("609dc5ce54022b5f0668ec03"), "usaername" : "tangseng", "username" : "tangseng" }
删除文档的属性
> db.users.updateOne({usaername:"tangseng"},{$unset:{usaername:"tangseng"}}) { "acknowledged" : true, "matchedCount" : 1, "modifiedCount" : 1 } > db.users.find().pretty() { "_id" : ObjectId("609dc59554022b5f0668ec02"), "username" : "sunwukong", "hobby" : { "cities" : [ "beijing", "tianjin" ], "movies" : [ "sanguo", "hero" ] } } { "_id" : ObjectId("609dc5ce54022b5f0668ec03"), "username" : "tangseng" } > db.users.update({username:"tangseng"},{$set:{hobby:{movies:["A","B"]}}}) WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 }) > db.users.find().pretty() { "_id" : ObjectId("609dc59554022b5f0668ec02"), "username" : "sunwukong", "hobby" : { "cities" : [ "beijing", "tianjin" ], "movies" : [ "sanguo", "hero" ] } } { "_id" : ObjectId("609dc5ce54022b5f0668ec03"), "username" : "tangseng", "hobby" : { "movies" : [ "A", "B" ] } } > db.users.find({hobby.movies:"hero"}) 2021-05-14T08:53:35.343+0800 E QUERY [js] uncaught exception: SyntaxError: missing : after property id : @(shell):1:20 > db.users.find({"hobby.movies":"hero"}) { "_id" : ObjectId("609dc59554022b5f0668ec02"), "username" : "sunwukong", "hobby" : { "cities" : [ "beijing", "tianjin" ], "movies" : [ "sanguo", "hero" ] } } > db.users.find({'hobby.movies':"hero"}) { "_id" : ObjectId("609dc59554022b5f0668ec02"), "username" : "sunwukong", "hobby" : { "cities" : [ "beijing", "tianjin" ], "movies" : [ "sanguo", "hero" ] } } > db.users.find({'hobby.movies':"hero"}).pretty() { "_id" : ObjectId("609dc59554022b5f0668ec02"), "username" : "sunwukong", "hobby" : { "cities" : [ "beijing", "tianjin" ], "movies" : [ "sanguo", "hero" ] } }
更新内嵌文档的属性值
> db.users.update({username:"tangseng"},{$push:{'hobby.movies':"hero1"}}) WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 }) > db.users.find({'hobby.movies':"hero"}).pretty() { "_id" : ObjectId("609dc59554022b5f0668ec02"), "username" : "sunwukong", "hobby" : { "cities" : [ "beijing", "tianjin" ], "movies" : [ "sanguo", "hero" ] } } > db.users.find().pretty() { "_id" : ObjectId("609dc59554022b5f0668ec02"), "username" : "sunwukong", "hobby" : { "cities" : [ "beijing", "tianjin" ], "movies" : [ "sanguo", "hero" ] } } { "_id" : ObjectId("609dc5ce54022b5f0668ec03"), "username" : "tangseng", "hobby" : { "movies" : [ "A", "B", "hero1" ] } }
根据条件删除指定文档
> db.users.remove({"hobby.cities":beijing}) 2021-05-14T09:02:42.703+0800 E QUERY [js] uncaught exception: ReferenceError: beijing is not defined : @(shell):1:18 > db.users.remove({"hobby.cities":"beijing"}) WriteResult({ "nRemoved" : 1 }) > db.users.find().pretty() { "_id" : ObjectId("609dc5ce54022b5f0668ec03"), "username" : "tangseng", "hobby" : { "movies" : [ "A", "B", "hero1" ] } }
删除集合中的所有文档
> db.users.remove({}) WriteResult({ "nRemoved" : 1 }) > db.users.find().pretty()
删除集合(集合为空,数据库也没了)
> db.users.drop() true > show dbs admin 0.000GB config 0.000GB local 0.000GB

> use test
switched to db test

插入文档
> db.numbers.save({num:30})
WriteResult({ "nInserted" : 1 })
> db.numbers.save({num:50})
WriteResult({ "nInserted" : 1 })
> db.numbers.save({num:150})
WriteResult({ "nInserted" : 1 })
> db.numbers.save({num:40})
WriteResult({ "nInserted" : 1 })
> db.numbers.find()
{ "_id" : ObjectId("609dcf9f4c73b23e9bdb7793"), "num" : 30 }
{ "_id" : ObjectId("609dcfa34c73b23e9bdb7794"), "num" : 50 }
{ "_id" : ObjectId("609dcfa44c73b23e9bdb7795"), "num" : 150 }
{ "_id" : ObjectId("609dcfaa4c73b23e9bdb7796"), "num" : 40 }

> db.numbers.find({num:{$lt:50}})
{ "_id" : ObjectId("609dcf9f4c73b23e9bdb7793"), "num" : 30 }
{ "_id" : ObjectId("609dcfaa4c73b23e9bdb7796"), "num" : 40 }
> db.numbers.find({num:{$gt:50}})
{ "_id" : ObjectId("609dcfa44c73b23e9bdb7795"), "num" : 150 }
> db.numbers.find({num:{$gt:"30"}})
> db.numbers.find({num:{$gt:30}})
{ "_id" : ObjectId("609dcfa34c73b23e9bdb7794"), "num" : 50 }
{ "_id" : ObjectId("609dcfa44c73b23e9bdb7795"), "num" : 150 }
{ "_id" : ObjectId("609dcfaa4c73b23e9bdb7796"), "num" : 40 }
> db.numbers.find({num:{$gt:30,$lt:150}})
{ "_id" : ObjectId("609dcfa34c73b23e9bdb7794"), "num" : 50 }
{ "_id" : ObjectId("609dcfaa4c73b23e9bdb7796"), "num" : 40 }

> db.numbers.find({$or:[{num:{$lt:40}},{num:{$gt:130}}]})
{ "_id" : ObjectId("609dcf9f4c73b23e9bdb7793"), "num" : 30 }
{ "_id" : ObjectId("609dcfa44c73b23e9bdb7795"), "num" : 150 }
> db.numbers.find({$or:[{num:{$gt:40}},{num:{$lt:130}}]})
{ "_id" : ObjectId("609dcf9f4c73b23e9bdb7793"), "num" : 30 }
{ "_id" : ObjectId("609dcfa34c73b23e9bdb7794"), "num" : 50 }
{ "_id" : ObjectId("609dcfa44c73b23e9bdb7795"), "num" : 150 }
{ "_id" : ObjectId("609dcfaa4c73b23e9bdb7796"), "num" : 40 }
> db.numbers.find({$or:[{num:{$lt:30}},{num:{$gt:40}}]})
{ "_id" : ObjectId("609dcfa34c73b23e9bdb7794"), "num" : 50 }
{ "_id" : ObjectId("609dcfa44c73b23e9bdb7795"), "num" : 150 }
> db.numbers.find({$or:[{num:{$lt:100}},{num:{$gt:40}}]})
{ "_id" : ObjectId("609dcf9f4c73b23e9bdb7793"), "num" : 30 }
{ "_id" : ObjectId("609dcfa34c73b23e9bdb7794"), "num" : 50 }
{ "_id" : ObjectId("609dcfa44c73b23e9bdb7795"), "num" : 150 }
{ "_id" : ObjectId("609dcfaa4c73b23e9bdb7796"), "num" : 40 }
> db.numbers.find({num:{$in:[30,40]}})
{ "_id" : ObjectId("609dcf9f4c73b23e9bdb7793"), "num" : 30 }
{ "_id" : ObjectId("609dcfaa4c73b23e9bdb7796"), "num" : 40 }

 

sort排序(1,-1) skip跳过, limit限制个数

> db.teachers.find().sort({name:-1}).skip().limit(1)
{ "_id" : ObjectId("609e5ae314f1f1a2f4ff068d"), "name" : "龟仙人" }
> db.teachers.find().sort({name:-1}).limit(1)
{ "_id" : ObjectId("609e5ae314f1f1a2f4ff068d"), "name" : "龟仙人" }
> db.teachers.find().sort({name:-1}).skip(1).limit(1)
{ "_id" : ObjectId("609e5ae314f1f1a2f4ff068c"), "name" : "黄药师" }
> db.teachers.find().sort({name:-1}).skip(2).limit(1)
{ "_id" : ObjectId("609e5ae314f1f1a2f4ff068b"), "name" : "洪七公" }
> db.teachers.find().sort({name:-1}).skip(3).limit(1)
> db.teachers.find().sort({name:-1}).skip(1).limit(1)
{ "_id" : ObjectId("609e5ae314f1f1a2f4ff068c"), "name" : "黄药师" }
> db.teachers.find().sort({name:-1}).limit(1).skip(2)
{ "_id" : ObjectId("609e5ae314f1f1a2f4ff068b"), "name" : "洪七公" }
> db.teachers.find().sort({name:-1}).limit(1).skip(1)
{ "_id" : ObjectId("609e5ae314f1f1a2f4ff068c"), "name" : "黄药师" }
> db.teachers.find().sort({name:-1}).limit(1).skip(3)
> db.teachers.find().sort({name:-1}).limit(1).skip(0)
{ "_id" : ObjectId("609e5ae314f1f1a2f4ff068d"), "name" : "龟仙人" }
> db.teachers.find({},{name:1}).sort({name:-1}).limit(2).skip(0)
{ "_id" : ObjectId("609e5ae314f1f1a2f4ff068d"), "name" : "龟仙人" }
{ "_id" : ObjectId("609e5ae314f1f1a2f4ff068c"), "name" : "黄药师" }
> db.teachers.find({},{name:1,_id:0}).sort({name:-1}).limit(2).skip(0)
{ "name" : "龟仙人" }
{ "name" : "黄药师" }

find({},{xx:1,xxx:0}) find() 第二个参数可用映射投影的字段
> db.teachers.find({},{name:1,_id:0}).sort({name:-1}).limit(2).skip(0)
{ "name" : "龟仙人" }
{ "name" : "黄药师" }

 

 spring-boot整合MongoDB

1.导入依赖

<dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
<dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <optional>true</optional>
</dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> scope>test</scope> </dependency>

 

2.配置MongoDB本地链接

# mongodb配置
# host
spring.data.mongodb.host=localhost
spring.data.mongodb.database=test
spring.data.mongodb.port=27017

3.测试

@SpringBootTest
class MongodbDemo01ApplicationTests {

    @Autowired
    MongoTemplate mongoTemplate;

    // Mongodb增加
    @Test
    void save() {

        Teacher teacher = new Teacher();
        teacher.setName("秦1老师");
        teacher.setId("a819f32e534c4df0b06ceb2964cf3bfb");
        Student student = new Student();
        for (int i = 6; i < 9; i++) {
            String studentID = UUID.randomUUID().toString().replaceAll("-", "");
            student.setId(studentID);
            student.setName("学生" + (i + 1));
            student.setAge(18);
            student.setTeacher(teacher);
            mongoTemplate.insert(student, "students");
        }
    }


    // Mongodb查询
    @Test
    void find(){
        Query query = new Query();
        query.addCriteria(Criteria.where("teacher.name").is("秦2老师"));
        List<Student> students = mongoTemplate.find(query, Student.class, "students");
        System.out.println(students);
//        Criteria criteria = new Criteria();
//        criteria.andOperator(Criteria.where("name").is("xx"),Criteria.where("name2").is("xx"))
//                .orOperator(Criteria.where("age").lte(23),Criteria.where("age").gte(53));
//        Query query = new Query();
//        Criteria criteria = new Criteria();
//
//        criteria.orOperator(
//                new Criteria().andOperator(
//                        Criteria.where("age").gt(gt),
//                        Criteria.where("age").lt(lt)
//                ),
//                Criteria.where("name").regex(".*"+name+".*")
//        );
//        query.addCriteria(criteria);
//        List<Person> personList = mongoTemplate.find(query,Person.class);
//        return personList;

    }


    // Mongodb更新
    @Test
    void update(){
        Query query = new Query();
        query.addCriteria(Criteria.where("id").is("9480d396e8e440d8935a682b0776d564"));
        Student student = mongoTemplate.findOne(query, Student.class);
        System.out.println(student);
        Update update = new Update();
        update.set("age",99);
        UpdateResult students = mongoTemplate.updateFirst(query, update, Student.class, "students");
        System.out.println(students);
        System.out.println(students.wasAcknowledged());

    }

    // Mongodb删除
    @Test
    void delete(){
        Query query = new Query();
        // 模糊查询删除
        query.addCriteria(Criteria.where("name").regex("学生"));
        DeleteResult result = mongoTemplate.remove(query, "students");
        System.out.println(result);
    }
}

 

 

 

posted @ 2021-05-14 09:49  G-G  阅读(141)  评论(0)    收藏  举报