[ mongoDB ] - mongoDB的基本操作
mongoDB的基本操作
強烈推薦參考官方用戶手冊:
http://www.mongodb.org/display/DOCS
?
1)插入(insert)
插入的value是json對象,以下示例循環(huán)添加了10個用戶信息,字段可以是字符串、數(shù)值、對象、數(shù)組等。
通過VUE查看:
?
2)查詢(find)
2.1——查詢全部內容:
db.user.find({})?
我們可以稱{}中的內容為選擇器,這里選擇器為空,可以省略,指獲取collection中所有內容。
?
2.2——字段查詢
db.user.find({name:'fox1'})
?
2.3——排序(sorting)
db.user.find({}).sort({age:1})
1代表升序,-1代表降序
?
2.4——skip and limit(可以用于分頁)
db.user.find({ }).skip(5).limit(5).sort({ "age" : 1 });
例如,對user表進行分頁,寫一個js函數(shù)提供分頁功能。
function pagination(pageNumber , nPerPage){ db.user.find().skip((pageNumber-1)*nPerPage).limit(nPerPage).forEach( function(user){print(user.name+"<p>")});}?
2.5——游標
var cur=db.user.find();
cur.forEach(function(x){ print(tojson(x))});
具體參考:
http://www.mongodb.org/display/DOCS/Querying
?
?
高級查詢
參考:http://www.mongodb.org/display/DOCS/Advanced+Queries
2.6——條件運算符
#<,<=,>,>=
#查找18<age<28的用戶
db.user.find({age:{$gt:18,$lt:28}})
?
#$all,全包含
#查找郵箱在'fox@126.com','hg0@fox.com'范圍內的用戶
db.user.find({email:{$all:['fox@126.com','hg0@fox.com']}})
?
#$exists,表示字段是否存在
#查找存在字段a的用戶
db.user.find({a:{$exists:true}})
?
#$mod,取模
#找到本命年的用戶
db.user.find({age:{$mod:[12,0]}})
等價于:
db.user.find("this.age % 12 == 0")
?
#$ne,不等于
#獲取age不等于10的用戶
db.user.find({age:{$ne:10}})
?
#$in,$nin
db.user.find({age:{$in:[10,12,14]}})
db.user.find({age:{$nin:[10,12,14]}})
?
#$nor,$or,$and 關系運算符
#查找age<15或者age>25的用戶,并按照age排序
db.user.find({$or:[{age:{$lt:15}},{age:{$gt:25}}]}).sort({age:1})
?
#$size
#查找有兩個郵箱地址的用戶
db.user.find({email:{$size:2}})
?
#$type
#根據(jù)字段類型進行查找
字段類型對應關系
| Double | 1 |
| String | 2 |
| Object | 3 |
| Array | 4 |
| Binary data | 5 |
| Object id | 7 |
| Boolean | 8 |
| Date | 9 |
| Null | 10 |
| Regular expression | 11 |
| JavaScript code | 13 |
| Symbol | 14 |
| JavaScript code with scope | 15 |
| 32-bit integer | 16 |
| Timestamp | 17 |
| 64-bit integer | 18 |
| Min key | 255 |
| Max key | 127 |
?
2.7——正則查詢
?
?
2.8——數(shù)據(jù)中數(shù)據(jù)的查詢
#可以直接對數(shù)組中的某一個元素進行檢索
#查詢郵箱包含hg6@fox.com的用戶
db.user.find({email:'hg6@fox.com'})
?
#elemMatch
#數(shù)組元素中應用數(shù)學表達式(match expression)
?
2.9——embedded Object(內置對象屬性查詢)
#查詢在長沙的用戶
db.user.find({'address.city':'changsha'})
注意:此時的address.city需要引號(整體化)
?
2.10——非
#$not
#查找大于等于15歲的用戶
db.user.find({age:{$not:{$lt:15}}})
注意:
db.user.find({$not:{age:{$gt:15}}})不正確!!!
?
2.11——js表達式
#查找age大于25的用戶
a) db.user.find({age:{$gt:25}})
b) db.user.find({$where:"this.age > 25"})
c) db.user.find("this.age > 25")
d) f = function(){return this.age>25;}
? ? db.user.find(f)
寫復雜條件,這個$where比較方便強大了!
?
3)更新(update)
3.1——更新語法:db.collection.update(?criteria,?objNew,?upsert,?multi?)
criteria:數(shù)據(jù)范圍,需要修改數(shù)據(jù)的查詢條件
objNew:更新數(shù)據(jù)
upsert:如果沒有查詢到則新增,但只新增一條數(shù)據(jù)
multi?:默認只更新第一條數(shù)據(jù)
?
3.2——#$inc
#必須是數(shù)值型字段
#給fox1加一歲
db.user.update({name:'fox1'},{$inc:{age:1}})
?
3.3——#$set
#給fox1變成10歲
db.user.update({name:'fox1'},{$set:{age:10}})
?
3.4——#$unset
#刪除某個字段
?
3.5——#針對數(shù)組的操作:$push,$pushAll,$addToset,$each,$pop,$pull,$pullAll
#給fox1新增一個郵箱($push)
db.user.update({name:'fox1'},{$push:{email:'fire009@126.com'}})
#$pop:{field:1}刪除最后一個元素,$pop:{field:-1}刪除第一個元素。
#$pull刪除數(shù)組中指定條件的數(shù)據(jù)。
#使用$進行位置上的操作(指定數(shù)組上某個元素)
?
?
?
?
?
總結
以上是生活随笔為你收集整理的[ mongoDB ] - mongoDB的基本操作的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ios 图片添加阴影
- 下一篇: linux下DHCP的安装配置