3.非关系型数据库(Nosql)之mongodb:升降序排序,排序分页,$all,$in,$nin,$or,$nor, $exists,游标,更新(update,$set,$unset,$inc)
1排序sort()
| A降序排列 db.c4.find().sort().sort({age:-1});
|
| B升序排列: db.c4.find().sort({age:-1});
|
| C排序分頁 db.collectionName.find().sort({age:-1}).skip(20).limit(10); ? eg:db.c4.find().sort({age:-1}).skip(20).limit(10);
|
2?$all,$in,$nin,$or,$nor,$exists
查詢集合中的文檔,$all主要用來查詢數組中的包含關系,查詢條件中只要有一個不包含就不返回。
| $all(只有都包含才會顯示) |
| > db.c5.insert({name:’zhangsan’,age:[1,2,3,4,5,9,10]}); WriteResult({ “nInserted” : 1 }) > db.c5.insert({name:’lisi’,age:[2,4,7,9,10]}); WriteResult({ “nInserted” : 1 }) > db.c5.insert({name:’wangwu’,age:[4,7,8,16,24]}); WriteResult({ “nInserted” : 1 }) > db.c5.find({age:{$all:[4,7,9]}}); { “_id” : ObjectId(“543e20c5e2c90313035e7d06”), “name” : “lisi”, “age” : [ 2, 4, 7, 9, 10 ] } >?
|
| $in(只要有包含1個就顯示) |
| > db.c5.find(); { “_id” : ObjectId(“543e2098e2c90313035e7d05”), “name” : “zhangsan”, “age” : [ 1, 2, 3, 4, 5, 9, 10 ] } { “_id” : ObjectId(“543e20c5e2c90313035e7d06”), “name” : “lisi”, “age” : [ 2, 4, 7, 9, 10 ] } { “_id” : ObjectId(“543e20ece2c90313035e7d07”), “name” : “wangwu”, “age” : [ 4, 7, 8, 16, 24 ] } >db.c5.find({age:{$in:[1,2,3]}}); { “_id” : ObjectId(“543e2098e2c90313035e7d05”), “name” : “zhangsan”, “age” : [ 1, 2, 3, 4, 5, 9, 10 ] } { “_id” : ObjectId(“543e20c5e2c90313035e7d06”), “name” : “lisi”, “age” : [ 2, 4, 7, 9, 10 ] } >?
|
| $nin (表示不包含的才顯示) |
| > db.c5.find(); { “_id” : ObjectId(“543e2098e2c90313035e7d05”), “name” : “zhangsan”, “age” : [ 1, 2, 3, 4, 5, 9, 10 ] } { “_id” : ObjectId(“543e20c5e2c90313035e7d06”), “name” : “lisi”, “age” : [ 2, 4, 7, 9, 10 ] } { “_id” : ObjectId(“543e20ece2c90313035e7d07”), “name” : “wangwu”, “age” : [ 4, 7, 8, 16, 24 ] } >db.c5.find({age:{$nin:[1,2,3]}}); { “_id” : ObjectId(“543e20ece2c90313035e7d07”), “name” : “wangwu”, “age” : [ 4, 7, 8, 16, 24 ] } >?
|
| $or (相當于或) |
| > db.c6.find({$or:[{name:”zhangsan”},{age:25}]}) { “_id” : ObjectId(“543e2409e2c90313035e7d08”), “name” : “zhangsan”, “age” : 24 } { “_id” : ObjectId(“543e2432e2c90313035e7d09”), “name” : “lisi”, “age” : 25 } { “_id” : ObjectId(“543e2451e2c90313035e7d0a”), “name” : “wangwu”, “age” : 25 } >?
|
| $nor 查詢集合中的文檔,$nor,表示根據條件過濾掉某些數據,例如:查詢name不是user2,age不是3的文檔,命令為: db.collectionName.find({$nor:[{name:”user1”},{age:3}]}); |
| > db.c6.find(); { “_id” : ObjectId(“543e2409e2c90313035e7d08”), “name” : “zhangsan”, “age” : 24 } { “_id” : ObjectId(“543e2432e2c90313035e7d09”), “name” : “lisi”, “age” : 25 } { “_id” : ObjectId(“543e2451e2c90313035e7d0a”), “name” : “wangwu”, “age” : 25 } > db.c6.find({$or:[{name:”zhangsan”},{age:25}]}) { “_id” : ObjectId(“543e2409e2c90313035e7d08”), “name” : “zhangsan”, “age” : 24 } { “_id” : ObjectId(“543e2432e2c90313035e7d09”), “name” : “lisi”, “age” : 25 } { “_id” : ObjectId(“543e2451e2c90313035e7d0a”), “name” : “wangwu”, “age” : 25 } > db.c6.find({$nor:[{name:”zhangsan”},{age:25}]}) >?
|
| $exists 查詢集合中的文檔,$exists,用于查詢集合中存在某個鍵的文檔或不存在某個鍵的文檔,例如查詢customer集合中存在name鍵的所有文檔,可以使用db.collectionName.find({name:{$exists:1}}); $exists:1表示真,指存在 $exists:0表示假,指不存在 |
| 分別查詢包含name屬性的和包含sex屬性的數據
|
3游標
| 游標(相當于數據庫的一個臨時的存儲區,它是存放在內存中的,查找某個集合返回記錄,我可以把這些記錄放在游標當中,然后我可以迭代游標)。 查詢集合中的文檔,類似關系型數據庫,mongodb中也有游標的概念
|
|
|
4更新
| > show dbs; admin?(empty) local?0.078GB test??0.078GB > use toto switched to db toto > db toto > use test switched to db test > use toto switched to db toto > db Toto > db.c1.insert({name:"zhangsan",age:19}); WriteResult({ "nInserted" : 1 }) > db.c1.insert({name:"lis",age:25}); WriteResult({ "nInserted" : 1 }) > db.c1.insert({name:"wangwu",age:23}); WriteResult({ "nInserted" : 1 }) > db.c1.insert({name:"zhaoliu",age:27}); WriteResult({ "nInserted" : 1 }) > db.c1.insert({name:"tianqi",age:33}); WriteResult({ "nInserted" : 1 }) >? > db.c1.find(); { "_id" : ObjectId("543e3223e2c90313035e7d0e"), "name" : "zhangsan", "age" : 19 } { "_id" : ObjectId("543e3244e2c90313035e7d0f"), "name" : "lis", "age" : 25 } { "_id" : ObjectId("543e3259e2c90313035e7d10"), "name" : "wangwu", "age" : 23 } { "_id" : ObjectId("543e3270e2c90313035e7d11"), "name" : "zhaoliu", "age" : 27 } { "_id" : ObjectId("543e3294e2c90313035e7d12"), "name" : "tianqi", "age" : 33 } >?
|
| 更新操作: db.collectionName.update({條件},{修改的值}),函數中4個參數的介紹 1.?設置更新的條件 2.?設置更新的內容的對象 3.?如果沒有符合條件的記錄,是否新增一條記錄(取值為0/1) 4.?如果有多條記錄符合,是否全部更新(取值0/1) db.collectionName.update({條件},{修改的值}) 1.?更新的時候只更新到一條,且其它的key:value覆蓋掉了 2.?我只更新到一條 > db.c1.find(); { "_id" : ObjectId("543e3244e2c90313035e7d0f"), "age" : 36 } { "_id" : ObjectId("543e3259e2c90313035e7d10"), "name" : "wangwu", "age" : 23 } { "_id" : ObjectId("543e3270e2c90313035e7d11"), "name" : "zhaoliu", "age" : 27 } { "_id" : ObjectId("543e3294e2c90313035e7d12"), "name" : "tianqi", "age" : 33 } > db.c1.update({age:36},{$set:{name:"zhangsan"}},0,1); WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 }) > db.c1.find(); { "_id" : ObjectId("543e3244e2c90313035e7d0f"), "age" : 36, "name" : "zhangsan" } { "_id" : ObjectId("543e3259e2c90313035e7d10"), "name" : "wangwu", "age" : 23 } { "_id" : ObjectId("543e3270e2c90313035e7d11"), "name" : "zhaoliu", "age" : 27 } { "_id" : ObjectId("543e3294e2c90313035e7d12"), "name" : "tianqi", "age" : 33 } >?
? > db.c1.find(); { "_id" : ObjectId("543e3244e2c90313035e7d0f"), "age" : 36, "name" : "zhangsan" } { "_id" : ObjectId("543e3259e2c90313035e7d10"), "name" : "wangwu", "age" : 23 } { "_id" : ObjectId("543e3270e2c90313035e7d11"), "name" : "zhaoliu", "age" : 27 } { "_id" : ObjectId("543e3294e2c90313035e7d12"), "name" : "tianqi", "age" : 33 } > db.c1.update({age:24},{$set:{name:"tuzuoquan",age:24}},1,0); WriteResult({ ???????"nMatched" : 0, ???????"nUpserted" : 1, ???????"nModified" : 0, ???????"_id" : ObjectId("543e3644dd76b7dcaba68faf") }) > db.c1.find(); { "_id" : ObjectId("543e3244e2c90313035e7d0f"), "age" : 36, "name" : "zhangsan" } { "_id" : ObjectId("543e3259e2c90313035e7d10"), "name" : "wangwu", "age" : 23 } { "_id" : ObjectId("543e3270e2c90313035e7d11"), "name" : "zhaoliu", "age" : 27 } { "_id" : ObjectId("543e3294e2c90313035e7d12"), "name" : "tianqi", "age" : 33 } { "_id" : ObjectId("543e3644dd76b7dcaba68faf"), "age" : 24, "name" : "tuzuoquan" } >?
|
5 inc
| 更新集合中的文檔,使用$inc將集合中name為user1的age加1,其它鍵不變,$inc表示使某個鍵值加減指定的數值。 |
| > for(var i=1;i<=20;i++){ db.c2.insert({name:"tuzuoquan",age:24}); } WriteResult({ "nInserted" : 1 }) > db.c2.find(); { "_id" : ObjectId("543e386ee2c90313035e7d13"), "name" : "tuzuoquan", "age" : 24 } { "_id" : ObjectId("543e386ee2c90313035e7d14"), "name" : "tuzuoquan", "age" : 24 } { "_id" : ObjectId("543e38a5e2c90313035e7d15"), "name" : "tuzuoquan", "age" : 24 } { "_id" : ObjectId("543e38a5e2c90313035e7d16"), "name" : "tuzuoquan", "age" : 24 } { "_id" : ObjectId("543e38a5e2c90313035e7d17"), "name" : "tuzuoquan", "age" : 24 } { "_id" : ObjectId("543e38a5e2c90313035e7d18"), "name" : "tuzuoquan", "age" : 24 } { "_id" : ObjectId("543e38a5e2c90313035e7d19"), "name" : "tuzuoquan", "age" : 24 } { "_id" : ObjectId("543e38a5e2c90313035e7d1a"), "name" : "tuzuoquan", "age" : 24 } { "_id" : ObjectId("543e38a5e2c90313035e7d1b"), "name" : "tuzuoquan", "age" : 24 } { "_id" : ObjectId("543e38a5e2c90313035e7d1c"), "name" : "tuzuoquan", "age" : 24 } { "_id" : ObjectId("543e38a5e2c90313035e7d1d"), "name" : "tuzuoquan", "age" : 24 } { "_id" : ObjectId("543e38a5e2c90313035e7d1e"), "name" : "tuzuoquan", "age" : 24 } { "_id" : ObjectId("543e38a5e2c90313035e7d1f"), "name" : "tuzuoquan", "age" : 24 } { "_id" : ObjectId("543e38a5e2c90313035e7d20"), "name" : "tuzuoquan", "age" : 24 } { "_id" : ObjectId("543e38a5e2c90313035e7d21"), "name" : "tuzuoquan", "age" : 24 } { "_id" : ObjectId("543e38a5e2c90313035e7d22"), "name" : "tuzuoquan", "age" : 24 } { "_id" : ObjectId("543e38a5e2c90313035e7d23"), "name" : "tuzuoquan", "age" : 24 } { "_id" : ObjectId("543e38a5e2c90313035e7d24"), "name" : "tuzuoquan", "age" : 24 } { "_id" : ObjectId("543e38a5e2c90313035e7d25"), "name" : "tuzuoquan", "age" : 24 } { "_id" : ObjectId("543e38a5e2c90313035e7d26"), "name" : "tuzuoquan", "age" : 24 } >? db.c2.update({name:"tuzuoquan"},{$inc:{age:1}},0,1);
|
6 $unset(刪除某個鍵)
| 更新集合中的文檔,$unset用來刪除某個鍵,例如刪除name為user1的文檔中address鍵,可以使用命令: db.c1.update({name:”user”},{$unset:{age:1}},0,1); |
| >db.c2.update({name:"tuzuoquan"},{$unset:{age:1}},0,1); WriteResult({ "nMatched" : 20, "nUpserted" : 0, "nModified" : 20 }) > db.c2.find(); { "_id" : ObjectId("543e386ee2c90313035e7d13"), "name" : "tuzuoquan" } { "_id" : ObjectId("543e386ee2c90313035e7d14"), "name" : "tuzuoquan" } { "_id" : ObjectId("543e38a5e2c90313035e7d15"), "name" : "tuzuoquan" } { "_id" : ObjectId("543e38a5e2c90313035e7d16"), "name" : "tuzuoquan" } { "_id" : ObjectId("543e38a5e2c90313035e7d17"), "name" : "tuzuoquan" } { "_id" : ObjectId("543e38a5e2c90313035e7d18"), "name" : "tuzuoquan" } { "_id" : ObjectId("543e38a5e2c90313035e7d19"), "name" : "tuzuoquan" } { "_id" : ObjectId("543e38a5e2c90313035e7d1a"), "name" : "tuzuoquan" } { "_id" : ObjectId("543e38a5e2c90313035e7d1b"), "name" : "tuzuoquan" } { "_id" : ObjectId("543e38a5e2c90313035e7d1c"), "name" : "tuzuoquan" } { "_id" : ObjectId("543e38a5e2c90313035e7d1d"), "name" : "tuzuoquan" } { "_id" : ObjectId("543e38a5e2c90313035e7d1e"), "name" : "tuzuoquan" } { "_id" : ObjectId("543e38a5e2c90313035e7d1f"), "name" : "tuzuoquan" } { "_id" : ObjectId("543e38a5e2c90313035e7d20"), "name" : "tuzuoquan" } { "_id" : ObjectId("543e38a5e2c90313035e7d21"), "name" : "tuzuoquan" } { "_id" : ObjectId("543e38a5e2c90313035e7d22"), "name" : "tuzuoquan" } { "_id" : ObjectId("543e38a5e2c90313035e7d23"), "name" : "tuzuoquan" } { "_id" : ObjectId("543e38a5e2c90313035e7d24"), "name" : "tuzuoquan" } { "_id" : ObjectId("543e38a5e2c90313035e7d25"), "name" : "tuzuoquan" } { "_id" : ObjectId("543e38a5e2c90313035e7d26"), "name" : "tuzuoquan" } >?
|
?
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的3.非关系型数据库(Nosql)之mongodb:升降序排序,排序分页,$all,$in,$nin,$or,$nor, $exists,游标,更新(update,$set,$unset,$inc)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 陌陌透明头像怎么弄的(全透明头像图片)
- 下一篇: 中国农业银行银行行号查询系统(中国农业银