MongoDB使用(一)

來源:互聯網
上載者:User

 

MongoDB是一個介於關聯式資料庫和非關聯式資料庫之間的產品,是非關聯式資料庫當中功能最豐富,最像關聯式資料庫的。他支援的資料結構非常鬆散,是類似json的bjson格式,因此可以儲存比較複雜的資料類型。Mongo最大的特點是他支援的查詢語言非常強大,其文法有點類似於物件導向的查詢語言,幾乎可以實作類別似關聯式資料庫單表查詢的絕大部分功能,而且還支援對資料建立索引。

它的特點是高效能、易部署、易使用,儲存資料非常方便。

 

1. MongoDB的擷取和安裝

 

(1)擷取地址 http://www.mongodb.org/downloads  根據自己需要選擇相應的版本,linux下可以使用wget 命令。

(2)解壓 mongodb-win32-i386-1.8.1

(3)建立資料存放檔案夾,mongodb預設的資料目錄 /data/db

 C:/> mkdir /data

 C:/> mkdir /data/db

(4)運行 MongoDB

     mongod.exe - 資料庫的伺服器端,相當於mysql的 mysqld命令,啟動伺服器端

     mongo.exe - 資料庫的用戶端,相當於mysql的mysql命令,開啟管理主控台

 

啟動服務

     mongod.exe --dbpath F:/DataBase/MongoDB/db/

         --dbpath 資料檔案存放路徑

         --port 資料服務連接埠

    C:/> cd /my_mongo_dir/bin

    C:/my_mongo_dir/bin > mongod   //啟動mongod 伺服器,預設的資料庫路徑  /data/db,連接埠27071

啟動用戶端

    mongo.exe cclove

    cclove  所串連的資料庫名稱

    C:/> cd /my_mongo_dir/bin

    C:/my_mongo_dir/bin> mongo  

 

2. 熟悉MongoDB的資料動作陳述式,類sql

 

資料庫操作文法

mongo --path

db.AddUser(username,password)  添加使用者

db.auth(usrename,password)     設定資料庫連接驗證

db.cloneDataBase(fromhost)     從目標伺服器複製一個資料庫

db.commandHelp(name)           returns the help for the command

db.copyDatabase(fromdb,todb,fromhost)  複製資料庫fromdb---來源資料庫名稱,todb---目標資料庫名稱,fromhost---來源資料庫伺服器位址

db.createCollection(name,{size:3333,capped:333,max:88888})  建立一個資料集,相當於一個表

db.currentOp()                 取消當前庫的當前操作

db.dropDataBase()              刪除當前資料庫

db.eval(func,args)             run code server-side

db.getCollection(cname)        取得一個資料集合,同用法:db['cname'] or db.cname

db.getCollenctionNames()       取得所有資料集合的名稱列表

db.getLastError()              返回最後一個錯誤的提示訊息

db.getLastErrorObj()           返回最後一個錯誤的對象

db.getMongo()                  取得當前伺服器的連線物件get the server connection object

db.getMondo().setSlaveOk()     allow this connection to read from then nonmaster membr of a replica pair

db.getName()                   返回當操作資料庫的名稱

db.getPrevError()              返回上一個錯誤對象

db.getProfilingLevel()         ?什麼等級

db.getReplicationInfo()        ?什麼資訊

db.getSisterDB(name)           get the db at the same server as this onew

db.killOp()                    停止(殺死)在當前庫的當前操作

db.printCollectionStats()      返回當前庫的資料集狀態

db.printReplicationInfo()

db.printSlaveReplicationInfo()

db.printShardingStatus()       返回當前資料庫是否為共用資料庫

db.removeUser(username)        刪除使用者

db.repairDatabase()            修複當前資料庫

db.resetError()                

db.runCommand(cmdObj)          run a database command. if cmdObj is a string, turns it into {cmdObj:1}

db.setProfilingLevel(level)    0=off,1=slow,2=all

db.shutdownServer()            關閉當前服務程式

db.version()                   返回當前程式的版本資訊

 

資料集(表)操作文法

db.linlin.find({id:10})          返回linlin資料集ID=10的資料集

db.linlin.find({id:10}).count()  返回linlin資料集ID=10的資料總數

db.linlin.find({id:10}).limit(2) 返回linlin資料集ID=10的資料集從第二條開始的資料集

db.linlin.find({id:10}).skip(8)  返回linlin資料集ID=10的資料集從0到第八條的資料集

db.linlin.find({id:10}).limit(2).skip(8)  返回linlin資料集ID=1=的資料集從第二條到第八條的資料

db.linlin.find({id:10}).sort()   返回linlin資料集ID=10的排序資料集

db.linlin.findOne([query])       返回合格一條資料

db.linlin.getDB()                返回此資料集所屬的資料庫名稱

db.linlin.getIndexes()           返回些資料集的索引資訊

db.linlin.group({key:...,initial:...,reduce:...[,cond:...]})

db.linlin.mapReduce(mayFunction,reduceFunction,<optional params>)

db.linlin.remove(query)                      在資料集中刪除一條資料

db.linlin.renameCollection(newName)          重新命名些資料集名稱

db.linlin.save(obj)                          往資料集中插入一條資料

db.linlin.stats()                            返回此資料集的狀態

db.linlin.storageSize()                      返回此資料集的儲存大小

db.linlin.totalIndexSize()                   返回此資料集的索引檔案大小

db.linlin.totalSize()                        返回些資料集的總大小

db.linlin.update(query,object[,upsert_bool]) 在此資料集中更新一條資料                         

db.linlin.validate()                         驗證此資料集                                        

db.linlin.getShardVersion()                  返回資料集共用版本號碼

 

db.linlin.find({'name':'foobar'})    select * from linlin where name='foobar'

db.linlin.find()                     select * from linlin

db.linlin.find({'ID':10}).count()    select count(*) from linlin where ID=10

db.linlin.find().skip(10).limit(20)  從查詢結果的第十條開始讀20條資料  select * from linlin limit 10,20  ----------mysql

db.linlin.find({'ID':{$in:[25,35,45]}})  select * from linlin where ID in (25,35,45)

db.linlin.find().sort({'ID':-1})      select * from linlin order by ID desc

db.linlin.distinct('name',{'ID':{$lt:20}})   select distinct(name) from linlin where ID<20

 

db.linlin.group({key:{'name':true},cond:{'name':'foo'},reduce:function(obj,prev){prev.msum+=obj.marks;},initial:{msum:0}})

select name,sum(marks) from linlin group by name

db.linlin.find('this.ID<20',{name:1})     select name from linlin where ID<20

 

db.linlin.insert({'name':'foobar','age':25})  insert into linlin ('name','age') values('foobar',25)

db.linlin.insert({'name':'foobar','age':25,'email':'cclove2@163.com'})

 

db.linlin.remove({})                   delete * from linlin

db.linlin.remove({'age':20})           delete linlin where age=20

db.linlin.remove({'age':{$lt:20}})     delete linlin where age<20

db.linlin.remove({'age':{$lte:20}})    delete linlin where age<=20

db.linlin.remove({'age':{$gt:20}})     delete linlin where age>20

db.linlin.remove({'age':{$gte:20}})    delete linlin where age>=20

db.linlin.remove({'age':{$ne:20}})     delete linlin where age!=20

 

db.linlin.update({'name':'foobar'},{$set:{'age':36}})  update linlin set age=36 where name='foobar'

db.linlin.update({'name':'foobar'},{$inc:{'age':3}})   update linlin set age=age+3 where name='foobar'

 

官方提供的動作陳述式對照表:

 

上行:SQL 動作陳述式

下行:Mongo 動作陳述式

CREATE TABLE USERS (a Number, b Number)

db.createCollection("mycoll")

 

INSERT INTO USERS VALUES(1,1)

db.users.insert({a:1,b:1})

 

SELECT a,b FROM users

db.users.find({}, {a:1,b:1})

 

SELECT * FROM users

db.users.find()

 

SELECT * FROM users WHERE age=33

db.users.find({age:33})

 

SELECT a,b FROM users WHERE age=33

db.users.find({age:33}, {a:1,b:1})

 

SELECT * FROM users WHERE age=33 ORDER BY name

db.users.find({age:33}).sort({name:1})

 

SELECT * FROM users WHERE age>33

db.users.find({'age':{$gt:33}})})

 

SELECT * FROM users WHERE age<33

db.users.find({'age':{$lt:33}})})

 

SELECT * FROM users WHERE name LIKE "%Joe%"

db.users.find({name:/Joe/})

 

SELECT * FROM users WHERE name LIKE "Joe%"

db.users.find({name:/^Joe/})

 

SELECT * FROM users WHERE age>33 AND age<=40

db.users.find({'age':{$gt:33,$lte:40}})})

 

SELECT * FROM users ORDER BY name DESC

db.users.find().sort({name:-1})

 

SELECT * FROM users WHERE a=1 and b='q'

db.users.find({a:1,b:'q'})

 

SELECT * FROM users LIMIT 10 SKIP 20

db.users.find().limit(10).skip(20)

 

SELECT * FROM users WHERE a=1 or b=2

db.users.find( { $or : [ { a : 1 } , { b : 2 } ] } )

 

SELECT * FROM users LIMIT 1

db.users.findOne()

 

SELECT DISTINCT last_name FROM users

db.users.distinct('last_name')

 

SELECT COUNT(*y) FROM users

db.users.count()

 

SELECT COUNT(*y) FROM users where AGE > 30

db.users.find({age: {'$gt': 30}}).count()

 

SELECT COUNT(AGE) from users

db.users.find({age: {'$exists': true}}).count()

 

CREATE INDEX myindexname ON users(name)

db.users.ensureIndex({name:1})

 

CREATE INDEX myindexname ON users(name,ts DESC)

db.users.ensureIndex({name:1,ts:-1})

 

EXPLAIN SELECT * FROM users WHERE z=3

db.users.find({z:3}).explain()

 

UPDATE users SET a=1 WHERE b='q'

db.users.update({b:'q'}, {$set:{a:1}}, false, true)

 

UPDATE users SET a=a+2 WHERE b='q'

db.users.update({b:'q'}, {$inc:{a:2}}, false, true)

 

DELETE FROM users WHERE z="abc"

db.users.remove({z:'abc'});

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.