MongoDB入门
笔记
MongoDB入门练习
1.数据库
2.集合
3.文档
使用手册:
MongoDB Collection Method(集合方法)
创建数据库
> 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); } }

浙公网安备 33010602011771号