MongoDB学习笔记(二:入门蒙受布置及与关系型数据库差距总计)

发布时间:2019-05-15  栏目:SQL  评论:0 Comments

1、下载及安装MongoDB

MongoDB下载官方网址链接:http://www.mongodb.org/downloads

切实安装步骤教程:http://www.shouce.ren/api/view/a/6191(PS:该链接中对MongoDB安装批注比较详细,通俗易懂。安装教程链接是本身从手册英特网找到的,上面包车型大巴下结论知识点也是自己从中学习后综合的一部分,风乐趣的同学不要紧收藏一下~)

附百度云下载链接:http://pan.baidu.com/s/1i5QpmiL
密码:lnqj

 

2、MongoDB可视化学工业具下载

私家比较习贯在图形化分界面进行有关命令操作,所以在装置完MongoDB后,就顺便找了二个MongoDB可视化学工业具安装使用。MongoDB可视化学工业具比较多,通过搜索网络有关博客和帖子,开采mongobooster这么些可视化学工业具相比较受应接。

manbet手机客户端3.0,Mongobooster官方网站下载链接:http://mongobooster.com/downloads(记得及时从官方网址下载时,网速超慢,上面附一个作者当时下载下来的二个本子的百度云链接)

Mongobooster百度云链接:http://pan.baidu.com/s/1jIhnwVW密码:wgxw

Mongobooster安装后实际分界面(PS:和动用mysql相关可视化学工业具很像,用着很不利):

 manbet手机客户端3.0 1

 

叁、MongoDB基本概念及与关系型数据分裂

MongoDB数据库基本概念:

关系型数据库

MongoDB

database(数据库)

database(数据库)

table(表)

collection(集合)

row(行)

document(文档)

column(列)

filed(域)

index(索引)

index(索引)

table joins(表关系)

primary key(主键)

自动将_id字段设置为主键

 

MongoDB常用的数据类型:

数据类型

描述

String

字符串,存储数据常用的数据类型,在MongoDB中,UTF-8编码才是合法的

Integer

整型数值,用于存储数值,根据你所采用的服务器,可分为32位或64位

Boolen

布尔值,用于存储布尔值(真/假)

Double

双精度浮点值,用于存储浮点值

Min/Max keys

将一个值与BSON(二进制的JSON)元素的最低值和最高值相对比

Arrays

用于将数组或列表或多个值存储为一个键

Timestamp

时间戳,记录文档修改或添加的具体时间

Object

用于内嵌文档

Null

用于创建空值

Symbol

符号。该数据类型基本上等同于字符串类型,但不同的是,它一般用于采用特殊符号类型的语言

Date

日期时间,用unix时间格式来存储当前日期或时间。你可以指定自己的日期时间:创建Date对象,传入年月日信息

Object ID

对象 ID,用于创建文档的 ID

Binary Data

二进制数据,用于存储二进制数据

Code

代码类型,用于在文档中存储 JavaScript 代码

Regular expression

正则表达式类型,用于存储正则表达式

 

MogoDB常用操作命令:

一、创立数据库:use db_name(例如:use library,创设2个数据库名字为library的数据库)

2、查看系统有着数据库:show dbs

3、删除数据库:先利用具体数据库,使用命令use
db_name(PS:该命令在有db_name数据库条件下不会创造数据库,未有则另行创立一个db_name数据库),然后利用命令db.dropDatabase()命令

肆、插入文书档案:db.collection_name.insert(document)

5、查看文书档案:db.collection_name.find()

陆、更新文书档案:db.collection_name.update(<query>,<update>,{upsert:<boolen>,multi:<boolen>,writeConcern:<boolen>})

七、删除文档:db.collection_name.remove(<query>,<justOne>)

 

MongoDB操作语句与关系型SQL语句比照对应表:

 

操作

格式

范例

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

      

附操作MongoDB数据库常见命令(PS:原稿链接):

  1 MongoDb 命令查询所有数据库列表  
  2   
  3 CODE:  
  4   
  5 > show dbs  
  6   
  7 如果想查看当前连接在哪个数据库下面,可以直接输入db  
  8 CODE:  
  9   
 10 > db  
 11 Admin  
 12 想切换到test数据库下面  
 13 CODE:  
 14   
 15 > use test  
 16 switched to db test  
 17 > db  
 18 Test  
 19 想查看test下有哪些表或者叫collection,可以输入  
 20 CODE:  
 21 
 22 
 23 > show collections  
 24 system.indexes  
 25 user  
 26 想知道mongodb支持哪些命令,可以直接输入help  
 27 CODE:  
 28 > help  
 29 Dos代码  收藏代码  
 30   
 31     HELP    
 32           show dbs                     show database names    
 33           show collections             show collections in current database    
 34           show users                   show users in current database    
 35           show profile                 show most recent system.profile entries with time >= 1ms    
 36           use <db name>                set curent database to <db name>    
 37           db.help()                    help on DB methods    
 38           db.foo.help()                help on collection methods    
 39           db.foo.find()                list objects in collection foo    
 40           db.foo.find( { a : 1 } )     list objects in foo where a == 1    
 41           it                           result of the last line evaluated; use to further iterate    
 42   
 43 如果想知道当前数据库支持哪些方法:  
 44 CODE:  
 45 
 46 
 47 
 48 > db.help();  
 49 Java代码  收藏代码  
 50   
 51     DB methods:    
 52           db.addUser(username, password) 添加数据库授权用户    
 53           db.auth(username, password)                访问认证    
 54           db.cloneDatabase(fromhost) 克隆数据库    
 55           db.commandHelp(name) returns the help for the command    
 56           db.copyDatabase(fromdb, todb, fromhost)  复制数据库    
 57           db.createCollection(name, { size : ..., capped : ..., max : ... } ) 创建表    
 58           db.currentOp() displays the current operation in the db    
 59           db.dropDatabase()        删除当前数据库    
 60           db.eval_r(func, args) run code server-side    
 61           db.getCollection(cname) same as db['cname'] or db.cname    
 62           db.getCollectionNames()        获取当前数据库的表名    
 63           db.getLastError() - just returns the err msg string    
 64           db.getLastErrorObj() - return full status object    
 65           db.getMongo() get the server connection object    
 66           db.getMongo().setSlaveOk() allow this connection to read from the nonmaster member of a replica pair    
 67           db.getName()    
 68           db.getPrevError()    
 69           db.getProfilingLevel()    
 70           db.getReplicationInfo()    
 71           db.getSisterDB(name) get the db at the same server as this onew    
 72           db.killOp() kills the current operation in the db    
 73           db.printCollectionStats()   打印各表的状态信息    
 74           db.printReplicationInfo()        打印主数据库的复制状态信息    
 75           db.printSlaveReplicationInfo()        打印从数据库的复制状态信息    
 76           db.printShardingStatus()                打印分片状态信息    
 77           db.removeUser(username) 删除数据库用户    
 78           db.repairDatabase() 修复数据库    
 79           db.resetError()    
 80           db.runCommand(cmdObj) run a database command.  if cmdObj is a string, turns it into { cmdObj : 1 }    
 81           db.setProfilingLevel(level) 0=off 1=slow 2=all    
 82           db.shutdownServer()    
 83           db.version() current version of the server    
 84 
 85 如果想知道当前数据库下的表或者表collection支持哪些方法,可以使用一下命令如:  
 86 CODE:  
 87   
 88 > db.user.help();  user为表名  
 89 Java代码  收藏代码  
 90   
 91     DBCollection help    
 92           db.foo.count()                统计表的行数    
 93           db.foo.dataSize()        统计表数据的大小    
 94           db.foo.distinct( key ) - eg. db.foo.distinct( 'x' )                按照给定的条件除重    
 95           db.foo.drop() drop the collection 删除表    
 96           db.foo.dropIndex(name)  删除指定索引    
 97           db.foo.dropIndexes() 删除所有索引    
 98           db.foo.ensureIndex(keypattern,options) - options should be an object with these possible fields: name, unique, dropDups  增加索引    
 99           db.foo.find( [query] , [fields]) - first parameter is an optional query filter. second parameter is optional set of fields to return.     
100   
101   
102 根据条件查找数据  
103 -----------------------  
104 通过条件查询: db.foo.find( { x : 77 } , { name : 1 , x : 1 } )  
105 -----------------------------  
106 
107 如果想知道当前数据库下的表或者表collection支持哪些方法,可以使用一下命令如:  
108 CODE:  
109   
110 > db.user.help();  user为表名  
111 Java代码  收藏代码  
112   
113     DBCollection help    
114           db.foo.count()                统计表的行数    
115           db.foo.dataSize()        统计表数据的大小    
116           db.foo.distinct( key ) - eg. db.foo.distinct( 'x' )                按照给定的条件除重    
117           db.foo.drop() drop the collection 删除表    
118           db.foo.dropIndex(name)  删除指定索引    
119           db.foo.dropIndexes() 删除所有索引    
120           db.foo.ensureIndex(keypattern,options) - options should be an object with these possible fields: name, unique, dropDups  增加索引    
121           db.foo.find( [query] , [fields]) - first parameter is an optional query filter. second parameter is optional set of fields to return.     
122   
123   
124 根据条件查找数据  
125 -----------------------  
126 通过条件查询: db.foo.find( { x : 77 } , { name : 1 , x : 1 } )  
127 -----------------------------  
128              instead of connecting to a mongod instance  
129 -v [ --verbose ]         be more verbose (include multiple times for more  
130                          verbosity e.g. -vvvvv)  
131 -o [ --out ] arg (=dump) output directory  
132 [falcon@www.fwphp.cn  ~/mongodb/bin]$ ./mongodump -d test -o test/  
133 connected to: 127.0.0.1  
134 DATABASE: test         to         test/test  
135       test.user to test/test/user.bson  
136                100000 objects  
137       test.system.indexes to test/test/system.indexes.bson  
138                1 objects  
139 [falcon@www.fwphp.cn  ~/mongodb/bin]$ ls  
140 2     mongo   mongodump    mongofiles   mongorestore  mongosniff  
141 dump  mongod  mongoexport  mongoimport  mongos     test  
142 MongoDB的数据恢复工具mongorestore  
143   
144 查看test库中的表  
145 CODE:  
146   
147 > show collections  
148 system.indexes  
149 User  
150 删除user表  
151 CODE:  
152   
153 > db.user.drop();  
154 True  
155 
156 > show collections  
157 System.indexes  
158 现在利用mongorestore表恢复刚才利用mongodump备份的数据  
159 CODE:  
160   
161 [falcon@www.fwphp.cn  ~/mongodb/bin]$ ./mongorestore --help  
162 usage: ./mongorestore [options] [directory or filename to restore from]  
163 options:  
164 --help                  produce help message  
165 -h [ --host ] arg       mongo host to connect to  
166 -d [ --db ] arg         database to use  
167 -c [ --collection ] arg collection to use (some commands)  
168 -u [ --username ] arg   username  
169 -p [ --password ] arg   password  
170 --dbpath arg            directly access mongod data files in this path,  
171                         instead of connecting to a mongod instance  
172 -v [ --verbose ]        be more verbose (include multiple times for more  
173                         verbosity e.g. -vvvvv)  
174   
175 [falcon@www.fwphp.cn  ~/mongodb/bin]$ ./mongorestore -d test -c user test/test/user.bson  
176 connected to: 127.0.0.1  
177 test/test/user.bson  
178        going into namespace [test.user]  
179   
180        100000 objects  
181 User表中的10w条记录已经恢复  
182 CODE:  
183   
184 > show collections  
185 system.indexes  
186 user  
187 > db.user.find();  
188 { "_id" : ObjectId("4b9c8db08ead0e3347000000"), "uid" : 1, "username" : "Falcon.C-1" }  
189 { "_id" : ObjectId("4b9c8db08ead0e3347010000"), "uid" : 2, "username" : "Falcon.C-2" }  
190 { "_id" : ObjectId("4b9c8db08ead0e3347020000"), "uid" : 3, "username" : "Falcon.C-3" }  
191 { "_id" : ObjectId("4b9c8db08ead0e3347030000"), "uid" : 4, "username" : "Falcon.C-4" }  
192 { "_id" : ObjectId("4b9c8db08ead0e3347040000"), "uid" : 5, "username" : "Falcon.C-5" }  
193 .................  
194 has more  
195   
196   
197   
198   
199   
200    1. 超级用户相关:  
201   
202          #增加或修改用户密码  
203   
204          db.addUser('admin','pwd')  
205   
206          #查看用户列表  
207   
208          db.system.users.find()  
209   
210          #用户认证  
211   
212          db.auth('admin','pwd')  
213   
214          #删除用户  
215   
216          db.removeUser('mongodb')  
217 
218    #查看所有用户  
219   
220          show users  
221   
222          #查看所有数据库  
223   
224          show dbs  
225   
226          #查看所有的collection  
227   
228          show collections  
229   
230          #查看各collection的状态  
231   
232          db.printCollectionStats()  
233   
234          #查看主从复制状态  
235   
236          db.printReplicationInfo()  
237   
238          #修复数据库  
239   
240          db.repairDatabase()  
241   
242          #设置记录profiling,0=off 1=slow 2=all  
243   
244          db.setProfilingLevel(1)  
245   
246          #查看profiling  
247         show profile  
248   
249          #拷贝数据库  
250   
251          db.copyDatabase('mail_addr','mail_addr_tmp')  
252   
253          #删除collection  
254   
255          db.mail_addr.drop()  
256   
257          #删除当前的数据库  
258   
259          db.dropDatabase()  
260   
261    2. 客户端连接  
262   
263           /usr/local/mongodb/bin/mongo user_addr -u user -p 'pwd'  
264   
265    3. 增删改  
266   
267            #存储嵌套的对象  
268   
269           db.foo.save({'name':'ysz','address':{'city':'beijing','post':100096},'phone':[138,139]})  
270   
271           #存储数组对象  
272   
273           db.user_addr.save({'Uid':'yushunzhi@sohu.com','Al':['test-1@sohu.com','test-2@sohu.com']})  
274   
275           #根据query条件修改,如果不存在则插入,允许修改多条记录  
276    db.foo.update({'yy':5},{'$set':{'xx':2}},upsert=true,multi=true)  
277   
278           #删除yy=5的记录  
279   
280           db.foo.remove({'yy':5})  
281   
282           #删除所有的记录  
283   
284          db.foo.remove()  
285   
286    4. 索引  
287   
288           增加索引:1(ascending),-1(descending)  
289   
290           db.things.ensureIndex({firstname: 1, lastname: 1}, {unique: true});  
291   
292           #索引子对象  
293   
294           db.user_addr.ensureIndex({'Al.Em': 1})  
295   
296           #查看索引信息  
297   
298           db.deliver_status.getIndexes()  
299   
300           db.deliver_status.getIndexKeys()  
301   
302           #根据索引名删除索引  
303     db.user_addr.dropIndex('Al.Em_1')  
304   
305    5. 查询  
306   
307           查找所有  
308   
309           db.foo.find()  
310   
311           #查找一条记录  
312   
313           db.foo.findOne()  
314   
315           #根据条件检索10条记录  
316   
317           db.foo.find({'msg':'Hello 1'}).limit(10)  
318   
319           #sort排序  
320   
321           db.deliver_status.find({'From':'yushunzhi@sohu.com'}).sort({'Dt',-1})  
322   
323           db.deliver_status.find().sort({'Ct':-1}).limit(1)  
324   
325          #count操作  
326   
327          db.user_addr.count()  
328   
329          #distinct操作  
330   
331          db.foo.distinct('msg')  
332     #>操作  
333   
334          db.foo.find({"timestamp": {"$gte" : 2}})  
335   
336          #子对象的查找  
337   
338          db.foo.find({'address.city':'beijing'})  
339   
340    6. 管理  
341   
342           查看collection数据的大小  
343   
344           db.deliver_status.dataSize()  
345   
346           #查看colleciont状态  
347   
348           db.deliver_status.stats()  
349   
350           #查询所有索引的大小  
351   
352           db.deliver_status.totalIndexSize()   

 

 

 

留下评论

网站地图xml地图