MongoDB基础知识练习备注

it2024-08-22  55

参考“”菜鸟教程“”而练习的MongoDB知识, 菜鸟教程链接!

打开cmd控制台(在MongoDB文件的bin下,cmd运行mongo): D:\MongoDB\Service\4.4\bin>mongo

1、MongoDB创建数据库: CMD命令: 创建数据库:use DATABASE_NAME。 如果数据库不存在,则创建数据库,否则切换到指定数据库。 显示当前数据库:db 查看所有数据库:show dbs 插入数据:db.DATABASE_NAME.insert({“name”:菜鸟教程"}) 注意: 在 MongoDB 中,集合只有在内容插入后才会创建! 就是说,创建集合(数据表)后要再插入一个文档(记录),集合才会真正创建。 MongoDB 中默认的数据库为 test,如果你没有创建新的数据库,集合将存放在 test 数据库中。

2、MongoDB删除数据库 CMD命令: 切换到当前数据库:use DATABASE_NAME 删除当前数据库:db.dropDatabase()

3、MongoDB创建集合、删除集合 (1)创建集合 db.createCollection(name, options) 参数说明: name: 要创建的集合名称 options: 可选参数, 指定有关内存大小及索引的选项 (2)删除集合 db.collection.drop() 参数说明: 无

创建集合:db.createCollection(COLLECTION_NAME) 删除集合collection_name:db.COLLECTION_NAME.drop() 例子: > use runoob switched to db runoob > db.createCollection("runoob") # 先创建集合,类似数据库中的表 > show tables # show collections 命令会更加准确点 runoob > db.runoob.drop() #删除集合名为runoob的集合(不是数据库名) true > show tables 注意: 在 MongoDB 中,你不需要创建集合。当你插入一些文档时,MongoDB 会自动创建集合。 > db.mycol2.insert({"name" : "菜鸟教程"}) > show collections mycol2 ...

4、MongoDB插入文档 (1)db.COLLECTION_NAME.insert() (2)db.COLLECTION_NAME.save() #如果不指定_id字段,save()方法类似于insert();如果指定_id字段,则会更新该_id的数据。

实例1:插入文档 >db.col.insert({title: 'MongoDB 教程', description: 'MongoDB 是一个 Nosql 数据库', by: '菜鸟教程', url: 'http://www.runoob.com', tags: ['mongodb', 'database', 'NoSQL'], likes: 100 }) 查看该集合下的文档: db.COLLECTION_NAME.find() db.COLLECTION_NAME.find().pretty() #cmd情况下,会格式化输出 实例2:将数据定义为一个变量,在插入此文档 > document=({title: 'MongoDB 教程', description: 'MongoDB 是一个 Nosql 数据库', by: '菜鸟教程', url: 'http://www.runoob.com', tags: ['mongodb', 'database', 'NoSQL'], likes: 100 }); > db.col.insert(document) 插入一个新文档:db.COLLECTION_NAME.insertOne() 插入多个文档:db.COLLECTION_NAME.insertMany() 实例: > documents = [{title:'MongoDB 教程', description:'MongoDB 是一个Nosql数据库', by: '菜鸟教程', url:'http://www.runoob.com', tags:['mongodb','database','Nosql'], likes:100 },{name:'JRWang',firstName:'Wang',lastName:'JR'}] [ { "title" : "MongoDB 教程", "description" : "MongoDB 是一个Nosql数据库", "by" : "菜鸟教程", "url" : "http://www.runoob.com", "tags" : [ "mongodb", "database", "Nosql" ], "likes" : 100 }, { "name" : "JRWang", "firstName" : "Wang", "lastName" : "JR" } ] > db.col.insertMany(documents) { tName:'JR'}] "acknowledged" : true, "insertedIds" : [ ObjectId("5f8a493aac6c84405107c26f"), ObjectId("5f8a493aac6c84405107c270") ] }

5、MangoDB更新文档 (1)update()方法 update() 方法用于更新已存在的文档。语法格式如下:

db.collection.update( <query>, <update>, { upsert: <boolean>, multi: <boolean>, writeConcern: <document> } ) 参数说明: query : update的查询条件,类似sql update查询内where后面的。 update : update的对象和一些更新的操作符(如$,$inc...)等,也可以理解为sql update查询内set后面的 upsert : 可选,这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。 multi : 可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。 writeConcern :可选,抛出异常的级别。 实例: db.col.update({'title':'MongoDB 教程'},{$set:{'title':'MongoDB'}}) (2)save()方法 save() 方法通过传入的文档来替换已有文档,_id 主键存在就更新,不存在就插入。 > curdocument = { "_id" : ObjectId("5f8a55d7ac6c84405107c276"), "title" : "MongoDB xx", "description" : "MongoDB 是一个Nosql数据库", "by" : "菜鸟教程", "url" : "http://www.runoob.com", "tags" : [ "mongodb", "database", "Nosql" ], "likes" : 100 } > db.col.save(curdocument) WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 }) 实例: 只更新第一条记录: db.col.update( { "count" : { $gt : 1 } } , { $set : { "test2" : "OK"} } ); 全部更新: db.col.update( { "count" : { $gt : 3 } } , { $set : { "test2" : "OK"} },false,true ); 只添加第一条: db.col.update( { "count" : { $gt : 4 } } , { $set : { "test5" : "OK"} },true,false ); 全部添加进去: db.col.update( { "count" : { $gt : 5 } } , { $set : { "test5" : "OK"} },true,true ); 全部更新: db.col.update( { "count" : { $gt : 15 } } , { $inc : { "count" : 1} },false,true ); 只更新第一条记录: db.col.update( { "count" : { $gt : 10 } } , { $inc : { "count" : 1} },false,false );

6、删除文档 (1)MongoDB remove()函数是用来移除集合中的数据。 remove() 方法的基本语法格式如下所示:

db.collection.remove( <query>, { justOne: <boolean>, writeConcern: <document> } ) 参数说明: query :(可选)删除的文档的条件。 justOne : (可选)如果设为 true 或 1,则只删除一个文档,如果不设置该参数,或使用默认值 false,则删除所有匹配条件的文档。 writeConcern :(可选)抛出异常的级别。 实例: #移除title为'MongoDB 教程'的文档 > db.col.remove({'title':'MongoDB 教程'}) WriteResult({ "nRemoved" : 2 }) #删除第一条找到的记录可以设置 justOne 为 1 > db.col.remove({'title':'MongoDB 教程'},1) WriteResult({ "nRemoved" : 1 }) #删除全部数据 > db.col.remove({}) (2)deleteOne()和deleteMany()方法 如删除集合下全部文档: db.inventory.deleteMany({}) 删除 status 等于 A 的全部文档: db.inventory.deleteMany({ status : "A" }) 删除 status 等于 D 的一个文档: db.inventory.deleteOne( { status: "D" } )

7、MongoDB 查询文档 MongoDB 查询文档使用 find() 方法。 find() 方法以非结构化的方式来显示所有文档。

语法 MongoDB 查询数据的语法格式如下: db.collection.find(query, projection) query :可选,使用查询操作符指定查询条件 projection :可选,使用投影操作符指定返回的键。查询时返回文档中所有键值, 只需省略该参数即可(默认省略)。 >db.col.find().pretty() 如果你需要以易读的方式来读取数据,可以使用 pretty() 方法,语法格式如下: >db.col.find().pretty() pretty() 方法以格式化的方式来显示所有文档。 (1) MongoDB 条件操作符查询文档(等于、小于、小于等于.....) 等于 {<key>:<value>} 小于 {<key>:{$lt:<value>}} 小于或等于 {<key>:{$lte:<value>}} 大于 {<key>:{$gt:<value>}} 大于或等于 {<key>:{$gte:<value>}} 不等于 {<key>:{$ne:<value>}} (2)MongoDB AND 条件 MongoDB 的 find() 方法可以传入多个键(key),每个键(key)以逗号隔开,即常规 SQL 的 AND 条件。 语法格式如下: >db.col.find({key1:value1, key2:value2}).pretty() 实例:> db.col.find({"by":"菜鸟教程", "title":"MongoDB 教程"}).pretty() #可省略key的引号 (3)MongoDB OR条件 >db.col.find( { $or: [ {key1: value1}, {key2:value2} ] } ).pretty() 实例: >db.col.find({$or:[{"by":"菜鸟教程"},{"title": "MongoDB 教程"}]}).pretty() (4)AND 和 OR联合使用 以下实例演示了 AND 和 OR 联合使用,类似常规 SQL 语句为: 'where likes>50 AND (by = '菜鸟教程' OR title = 'MongoDB 教程')' >db.col.find({"likes": {$gt:50}, $or: [{"by": "菜鸟教程"},{"title": "MongoDB 教程"}]}).pretty()

8、MongoDB 条件操作符 MongoDB中条件操作符有:

(>) 大于 - $gt (<) 小于 - $lt (>=) 大于等于 - $gte (<= ) 小于等于 - $lte (1)MongoDB (>) 大于操作符 - $gt #获取 "col" 集合中 "likes" 大于 100 的数据 db.col.find({likes : {$gt : 100}}) (2)MongoDB(>=)大于等于操作符 - $gte #获取"col"集合中 "likes" 大于等于 100 的数据 db.col.find({likes : {$gte : 100}}) (3)MongoDB(>=)大于等于操作符 - $gte #获取"col"集合中 "likes" 大于等于 100 的数据 db.col.find({likes : {$gte : 100}}) (4)MongoDB (<) 小于操作符 - $lt #获取"col"集合中 "likes" 小于 150 的数据 db.col.find({likes : {$lt : 150}}) (5)MongoDB (<=) 小于等于操作符 - $lte #获取"col"集合中 "likes" 小于等于 150 的数据 db.col.find({likes : {$lte : 150}}) (6)MongoDB 使用 (<) 和 (>) 查询 - $lt 和 $gt #获取"col"集合中 "likes" 大于100,小于 200 的数据 db.col.find({likes : {$lt :200, $gt : 100}})

9、MongoDB 操作符 $type操作符是基于BSON类型来检索集合中匹配的数据类型,并返回结果。 Double 1 String 2 Object 3 Array 4 Binary data 5 Undefined 6 已废弃。 Object id 7 Boolean 8 Date 9 Null 10 Regular Expression 11 JavaScript 13 Symbol 14 JavaScript (with scope) 15 32-bit integer 16 Timestamp 17 64-bit integer 18 Min key 255 Query with -1. Max key 127

实例:获取 "col" 集合中 title 为 String 的数据 db.col.find({"title" : {$type : 2}}) 或 db.col.find({"title" : {$type : 'string'}}) 类型 数字 备注

10、MongoDB limit()和skip() (1)limit() 在MongoDB中读取指定数量的数据记录,可以使用MongoDB的Limit方法,limit()方法接受一个数字参数,该参数指定从MongoDB中读取的记录条数。 语法: limit()方法基本语法如下所示: >db.COLLECTION_NAME.find().limit(NUMBER)

(2)skip() 使用skip()方法来跳过指定数量的数据,skip方法同样接受一个数字参数作为跳过的记录条数。 语法 skip() 方法脚本语法格式如下: >db.COLLECTION_NAME.find().limit(NUMBER).skip(NUMBER)

11、MongoDB 排序 MongoDb sort()方法: 在 MongoDB 中使用 sort() 方法对数据进行排序,sort() 方法可以通过参数指定排序的字段,并使用 1 和 -1 来指定排序的方式,其中 1 为升序排列,而 -1 是用于降序排列。

语法 sort()方法基本语法如下所示: >db.COLLECTION_NAME.find().sort({KEY:1}) 实例: 演示了 col 集合中的数据按字段 likes 的降序排列: >db.col.find({},{"title":1,_id:0}).sort({"likes":-1}) { "title" : "PHP 教程" } { "title" : "Java 教程" } { "title" : "MongoDB 教程" } >
最新回复(0)