標籤:mongodb nosql
What is Mongodb ?
Mongo DB是一款開源的非關係型資料庫(NoSql)其文檔模型自由靈活,可以讓你在開發過程中暢順無比。對於大資料量、高並發、弱事務的互連網應用,MongoDB可以應對自如。MongoDB內建的水平擴充機制提供了從百萬到十億層級的資料量處理能力,完全可以滿足Web2.0和移動互連網的資料存放區需求,其開箱即用的特性也大大降低了中小型網站的營運成本。
安裝Mongodb
來到mongodb官網http://www.mongodb.org/可以在這裡找到YUM源,安裝對應版本的兩個包,一個為服務端,一個為用戶端安裝包名稱如下:
mongo-10gen-2.4.12-mongodb_1.x86_64.rpm
mongo-10gen-server-2.4.12-mongodb_1.x86_64.rpm
添加官方yum源:
vim /etc/yum.repos.d/monogdb.repo
[mongodb]
name=MongoDB Repository
baseurl=http://downloads-distro.mongodb.org/repo/redhat/os/x86_64/
gpgcheck=0
enabled=1
yum install mongo-10gen.x86_64 mongo-10gen-server.x86_64 -y
建立mongodb資料檔案夾
mkdir /mongodb/data/
chown -R mongod.mongod /mongodb/data/
修改設定檔/etc/mongod.conf指定資料目錄
dbpath=/mongodb/data
啟動Mongodb
service mongod start
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/57/9A/wKiom1SfyE6TZq64AAIM0J8VHCY345.jpg" title="4USH%}@NX~X]BSVPNQ@U748.png" alt="wKiom1SfyE6TZq64AAIM0J8VHCY345.jpg" />
Mongodb的CRUD操作
[[email protected] ~]# mongo
MongoDB shell version: 2.4.5
connecting to: test
> show dbs //顯示資料庫
local0.078125GB
testdb0.203125GB
> use testdb //使用資料庫,不需要提前建立可以直接使用。
switched to db testdb
> db.testmcoll.insert({Name: "Jerry"}) //指定集合插入資料
> db.testmcoll.insert({Name:"Haiman"})
> show collections //顯示庫中的集合
system.indexes
testmcoll
> db.testmcoll.find() //尋找集合中的資料
{ "_id" : ObjectId("549fcaa56e8223a06e8b1f52"), "Name" : "Jerry" }
{ "_id" : ObjectId("549fcadc6e8223a06e8b1f53"), "Name" : "Haiman" }
> db.testmcoll.stats() //輸出集合的狀態資訊
{
"ns" : "testdb.testmcoll",
"count" : 2,
"size" : 80,
"avgObjSize" : 40,
"storageSize" : 4096,
"numExtents" : 1,
"nindexes" : 1,
"lastExtentSize" : 4096,
"paddingFactor" : 1,
"systemFlags" : 1,
"userFlags" : 0,
"totalIndexSize" : 8176,
"indexSizes" : {
"_id_" : 8176
},
"ok" : 1
}
>
> db.testmcoll.drop() //刪除集合
true
多值插入和批量插入
db.users.insert( { name:"Tom", age:23, status:"S", groups:[ "News","concert" ] } )
for(i=1;i<=100;i++) db.users.insert({Name:"User"+i,Age:i,Gender:"M",Class:["Network","software"]})
刪除年齡為18的行
db.users.remove({Age:18})
將user12的年齡改為22
db.users.update({Name:"User10"},{$set:{Age:22}}) //先指定查詢條件,然後用逗號分割開要設定的值。
將年齡大於60的使用者class欄位的值都改為"old-club"
db.users.update({Age:{$gt:60}},{$set:{Class:"old-club"}},{multi:true}) //mongodb預設只修改第一個匹配條件的document,multi:true代表修改整個文檔被匹配到的內容
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/57/98/wKioL1Sf8InxXtC5AAHUAWO01x4254.jpg" title="QQ20141228195546.png" alt="wKioL1Sf8InxXtC5AAHUAWO01x4254.jpg" />
統計指定集合中文檔的個數
db.users.count()
db.collection.find() 比較子:
$gt 大於
$gte 大於等於
$in 存在於指定列表中
$lt 小於
$lte 小於等於
$ne 不等於
$nin 不存在指定列表中
尋找出Age大於等於90的使用者,只顯示Name,Age欄位:
db.users.find({Age:{$gte:90}},{Name:1,Age:1})
邏輯運算
$or:或運算 $and:與運算 $not:非運算 $nor:反運算,表示返回不符合所有指定條件的文檔。
尋找Age大於61並且小於70的使用者
db.users.find({$and:[{Age:{$gt:61}},{Age:{$lt:70}}]})
尋找Age大於61並且小於70的使用者只,顯示Name欄位
db.users.find({$and:[{Age:{$gt:61}},{Age:{$lt:70}}]},{Name:1})
元素查詢
$exists:根據指定欄位的存在性挑選文檔,文法格式{field:{$exists:<boolean>}},指定<boolean>的值為"true"則返回存在指定欄位的文檔,"false"則返回不存在指定欄位的文檔;
$mod:將指定欄位的值進行模數運算,並返回其餘數為指定值得文檔
$type:返回指定欄位的實值型別為指定類型的文檔
尋找存在Address欄位的文檔
db.users.find({Address:{$exists:true}})
總結完成!
本文出自 “突破舒適區” 部落格,請務必保留此出處http://tchuairen.blog.51cto.com/3848118/1597002
Mongodb的安裝與CRUD操作