在前一章内MongoDB 安装(Mac), 我们介绍了基本的MongdoDB的安装. 本章我们继续接着上章的内容继续.
最近眼疾较为严重, 所以许久没更新了. 各位, 在工作和生活的时候多进行运动, 多保护自己的身体. 不要被剥削和洗脑的太过严重!
我们都知道, 在Mysql内,我们经常将操作语言分为DML和DDL. 前者为表的相关操作&权限的相关操作等. 后者, 主要基于创建的表进行CURD的操作. 其实, 个人认为, 在MongoDB的使用过程中, 完全也可以这样进行划分.
在SQL型数据库内, 我们的一等公民为数据库-表-列-记录, 而在MondoDB内, 一等公民则为数据库-集合-列-文档
其实这也不是特别难以理解. 引用Runoob的表格和图片来形容, 对比如下所示:
SQL术语/概念MongoDB术语/概念解释/说明databasedatabase数据库tablecollection数据库表/集合rowdocument数据记录行/文档columnfield数据字段/域indexindex索引tablejoins表连接,MongoDB不支持primary keyprimary key主键,MongoDB自动将_id字段设置为主键关于MongoDB的启动与客户端的链接, 我们在上章已经提过了. 这边简单的提一下.
启动 localhost:MongoDB Sean$ mongod --dbpath=/Users/Sean/Software/MongoDB/data/db 本地链接 localhost:~ Sean$ mongo MongoDB shell version v3.4.2 connecting to: mongodb://127.0.0.1:27017 MongoDB server version: 3.4.2 Welcome to the MongoDB shell. For interactive help, type "help". For more comprehensive documentation, see http://docs.mongodb.org/ Questions? Try the support group http://groups.google.com/group/mongodb-user Server has startup warnings: 2019-05-10T17:09:07.681+0800 I CONTROL [initandlisten] 2019-05-10T17:09:07.681+0800 I CONTROL [initandlisten] ** WARNING: Access control is not enabled for the database. 2019-05-10T17:09:07.681+0800 I CONTROL [initandlisten] ** Read and write access to data and configuration is unrestricted. 2019-05-10T17:09:07.681+0800 I CONTROL [initandlisten]远程链接 mongo 192.168.100.21:27017 具体操作与链接的权限操作, 参考这篇文章. 这边就不详细讨论了. mongodb远程连接配置
参数说明:
query : update的查询条件,类似sql update查询内where后面的。update : update的对象和一些更新的操作符(如 , , ,inc…)等,也可以理解为sql >* update查询内set后面的upsert : 可选,这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。multi : 可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。writeConcern :可选,抛出异常的级别。 删除文档 db.collection.remove( <query>, { justOne: <boolean>, writeConcern: <document> } ) # 示例 >db.col.remove({'title':'MongoDB 教程'}) WriteResult({ "nRemoved" : 2 }) # 删除了两条数据参数说明:
query :(可选)删除的文档的条件。justOne : (可选)如果设为 true 或 1,则只删除一个文档,如果不设置该参数,或使用默认值 false,则删除所有匹配条件的文档。writeConcern :(可选)抛出异常的级别。 删除所有数据 >db.col.remove({}) 查询文档 db.collection.find(query, projection) # 示例 db.col.find() query :可选,使用查询操作符指定查询条件projection :可选,使用投影操作符指定返回的键。查询时返回文档中所有键值, 只需省略该参数即可(默认省略)。 查询文档(格式化读取) >db.col.find().pretty() 查询文档(Where) 操作格式范例RDBMS中的类似语句等于{<key>:<value>}db.col.find({“by”:“菜鸟教程”}).pretty()where by = ‘菜鸟教程’小于{<key>:{$lt:<value>}}db.col.find({“likes”:{$lt:50}}).pretty()where likes < 50小于或等于{<key>:{$lte:<value>}}db.col.find({“likes”:{$lte:50}}).pretty()where likes <= 50大于{<key>:{$gt:<value>}}db.col.find({“likes”:{$gt:50}}).pretty()where likes > 50大于或等于{<key>:{$gte:<value>}}db.col.find({“likes”:{$gte:50}}).pretty()where likes >= 50不等于{<key>:{$ne:<value>}}db.col.find({“likes”:{$ne:50}}).pretty()where likes != 50 查询文档(AND) >db.col.find({key1:value1, key2:value2}).pretty() # 示例 > db.col.find({"by":"教程", "title":"MongoDB 教程"}).pretty() 查询文档(OR) >db.col.find( { $or: [ {key1: value1}, {key2:value2} ] } ).pretty() # 示例 >db.col.find({$or:[{"by":"教程"},{"title": "MongoDB 教程"}]}).pretty() 查询文档(AND & OR) >db.col.find({"likes": {$gt:50}, $or: [{"by": "教程"},{"title": "MongoDB 教程"}]}).pretty() 查询文档(正则表达式) >db.posts.find({post_text:{$regex:"yanxml"}}) >db.posts.find({post_text:/yanxml/}) # 不区分大小写 >db.posts.find({post_text:{$regex:"yanxml",$options:"$i"}})更加深入的了解, 后面应当是:
搜索正则表达式分片创建和管理数据库索引Java APIMongdoDB数据底层 & 与Mysql传统数据库底层B+树的区别由于本人用的不是特别多, 这部分的内容暂且挂起. 等有时间的时候进行研究.
[1]. MongoDB 教程
