日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

1月16日学习内容整理:存储库MongoDB之文档的增删改查操作补充

發(fā)布時(shí)間:2025/3/15 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 1月16日学习内容整理:存储库MongoDB之文档的增删改查操作补充 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

文檔操作

一、查

1、比較運(yùn)算

# SQL:=,!=,>,<,>=,<= # MongoDB:{key:value}代表什么等于什么,"$ne","$gt","$lt","gte","lte",其中"$ne"能用于所有數(shù)據(jù)類型#1、select * from db1.user where name = "alex"; db.user.find({'name':'alex'}) #這種key=value形式就代表等于#2、select * from db1.user where name != "alex"; db.user.find({'name':{"$ne":'alex'}})#3、select * from db1.user where id > 2; db.user.find({'_id':{'$gt':2}})#4、select * from db1.user where id < 3; db.user.find({'_id':{'$lt':3}})#5、select * from db1.user where id >= 2; db.user.find({"_id":{"$gte":2,}})#6、select * from db1.user where id <= 2; db.user.find({"_id":{"$lte":2}})

?

2、邏輯運(yùn)算

# SQL:and,or,not # MongoDB:字典中逗號(hào)分隔的多個(gè)條件是and關(guān)系,"$or"的條件放到[]內(nèi),"$not"#1、select * from db1.user where id >= 2 and id < 4; db.user.find({'_id':{"$gte":2,"$lt":4}})#2、select * from db1.user where id >= 2 and age < 40; db.user.find({"_id":{"$gte":2},"age":{"$lt":40}})#3、select * from db1.user where id >= 5 or name = "alex"; db.user.find({"$or":[{'_id':{"$gte":5}},{"name":"alex"}] })#4、select * from db1.user where id % 2=1; db.user.find({'_id':{"$mod":[2,1]}}) #mod意思是除以2的余數(shù)是1的id值#5、上題,取反 db.user.find({'_id':{"$not":{"$mod":[2,1]}}})

?

3、成員運(yùn)算

# SQL:in,not in # MongoDB:"$in","$nin"#1、select * from db1.user where age in (20,30,31); db.user.find({"age":{"$in":[20,30,31]}})#2、select * from db1.user where name not in ('alex','yuanhao'); db.user.find({"name":{"$nin":['alex','yuanhao']}})

?

4、正則匹配

# SQL: regexp 正則 # MongoDB: /正則表達(dá)/i#1、select * from db1.user where name regexp '^j.*?(g|n)$'; db.user.find({'name':/^j.*?(g|n)$/i})

?

5、獲取指定的字段

#1、select name,age from db1.user where id=3; #1就代表要,0就代表不要 db.user.find({'_id':3},{'_id':0,'name':1,'age':1})

?

6、查詢數(shù)組和切片

#1、查看有dancing愛(ài)好的人 db.user.find({'hobbies':'dancing'})#2、查看既有dancing愛(ài)好又有tea愛(ài)好的人 db.user.find({'hobbies':{"$all":['dancing','tea']} })#3、查看第4個(gè)愛(ài)好為tea的人,3代表索引 db.user.find({"hobbies.3":'tea'})#4、查看所有人最后兩個(gè)愛(ài)好,slice代表切片 db.user.find({},{'hobbies':{"$slice":-2},"age":0,"_id":0,"name":0,"addr":0})#5、查看所有人的第2個(gè)到第3個(gè)愛(ài)好 db.user.find({},{'hobbies':{"$slice":[1,2]},"age":0,"_id":0,"name":0,"addr":0})> db.blog.find().pretty() {"_id" : 1,"name" : "alex意外死亡的真相","comments" : [{"name" : "egon","content" : "alex是誰(shuí)???","thumb" : 200},{"name" : "wxx","content" : "我去,真的假的","thumb" : 300},{"name" : "yxx","content" : "吃喝嫖賭抽,欠下兩個(gè)億","thumb" : 40},{"name" : "egon","content" : "xxx","thumb" : 0}] } db.blog.find({},{'comments':{"$slice":-2}}).pretty() #查詢最后兩個(gè) db.blog.find({},{'comments':{"$slice":[1,2]}}).pretty() #查詢1到2

?

7、排序

# 排序:--1代表升序,-1代表降序 db.user.find().sort({"name":1,}) #意思是若age相同的話,就按id值排序 db.user.find().sort({"age":-1,'_id':1})

?

8、分頁(yè)

# 分頁(yè):--limit代表取多少個(gè)document,skip代表跳過(guò)前多少個(gè)document。 #意思是跳過(guò)前2個(gè),獲取第3個(gè),且按照升序age排序 db.user.find().sort({'age':1}).limit(3).skip(2)

?

9、獲取數(shù)量

# 獲取數(shù)量 db.user.count({'age':{"$gt":30}}) --或者 db.user.find({'age':{"$gt":30}}).count()

?

10、其它

#1、{'key':null} 匹配key的值為null或者沒(méi)有這個(gè)key db.t2.insert({'a':10,'b':111}) db.t2.insert({'a':20}) db.t2.insert({'b':null})> db.t2.find({"b":null}) { "_id" : ObjectId("5a5cc2a7c1b4645aad959e5a"), "a" : 20 } { "_id" : ObjectId("5a5cc2a8c1b4645aad959e5b"), "b" : null }#2、查找所有,返回?cái)?shù)組 db.user.find() #等同于db.user.find({}) db.user.find().pretty()#3、查找一個(gè),與find用法一致,只是只取匹配成功的第一個(gè),返回對(duì)象 db.user.findOne({"_id":{"$gt":3}})

?

?

二、改

注意一點(diǎn):id主鍵不能修改,可以刪除

1、update的用法

update() 方法用于更新已存在的文檔。語(yǔ)法格式如下: db.collection.update(<query>,<update>,{upsert: <boolean>,multi: <boolean>,writeConcern: <document>} ) 參數(shù)說(shuō)明:對(duì)比update db1.t1 set name='EGON',sex='Male' where name='egon' and age=18;query : 相當(dāng)于where條件。 update : update的對(duì)象和一些更新的操作符(如$,$inc...等,相當(dāng)于set后面的 upsert : 可選,默認(rèn)為false,代表如果不存在update的記錄不更新也不插入,設(shè)置為true代表插入。 multi : 可選,默認(rèn)為false,代表只更新找到的第一條記錄,設(shè)為true,代表更新找到的全部記錄。 writeConcern :可選,拋出異常的級(jí)別。更新操作是不可分割的:若兩個(gè)更新同時(shí)發(fā)送,先到達(dá)服務(wù)器的先執(zhí)行,然后執(zhí)行另外一個(gè),不會(huì)破壞文檔。

?

2、覆蓋式

#注意:除非是刪除,否則_id是始終不會(huì)變的 #1、覆蓋式: db.user.update({'age':20},{"name":"Wxx","hobbies_count":3}) 是用{"_id":2,"name":"Wxx","hobbies_count":3}覆蓋原來(lái)的記錄#2、一種最簡(jiǎn)單的更新就是用一個(gè)新的文檔完全替換匹配的文檔。這適用于大規(guī)模式遷移的情況。例如 var obj=db.user.findOne({"_id":2})obj.username=obj.name+'SB' obj.hobbies_count++ delete obj.agedb.user.update({"_id":2},obj)

?

3、選擇器

(1)$set

#設(shè)置:$set 通常文檔只會(huì)有一部分需要更新。可以使用原子性的更新修改器,指定對(duì)文檔中的某些字段進(jìn)行更新。 更新修改器是種特殊的鍵,用來(lái)指定復(fù)雜的更新操作,比如修改、增加后者刪除#1、update db1.user set name="WXX" where id = 2 db.user.update({'_id':2},{"$set":{"name":"WXX",}})#2、沒(méi)有匹配成功則新增一條{"upsert":true} db.user.update({'_id':6},{"$set":{"name":"egon","age":18}},{"upsert":true})#3、默認(rèn)只改匹配成功的第一條,{"multi":改多條} db.user.update({'_id':{"$gt":4}},{"$set":{"age":28}}) db.user.update({'_id':{"$gt":4}},{"$set":{"age":38}},{"multi":true})#4、修改內(nèi)嵌文檔,把名字為alex的人所在的地址國(guó)家改成Japan db.user.update({'name':"alex"},{"$set":{"addr.country":"Japan"}})#5、把名字為alex的人的地2個(gè)愛(ài)好改成piao db.user.update({'name':"alex"},{"$set":{"hobbies.1":"piao"}})#6、刪除alex的愛(ài)好,$unset db.user.update({'name':"alex"},{"$unset":{"hobbies":""}}) set選擇器

(2)增加和減少:$inc

#增加和減少:$inc#1、所有人年齡增加一歲 db.user.update({},{"$inc":{"age":1}},{"multi":true}) #2、所有人年齡減少5歲 db.user.update({},{"$inc":{"age":-5}},{"multi":true})

?

(3)添加刪除數(shù)組內(nèi)元素:$push,$pop,$pull ?和循環(huán)$each

#添加刪除數(shù)組內(nèi)元素 往數(shù)組內(nèi)添加元素:$push #1、為名字為yuanhao的人添加一個(gè)愛(ài)好read db.user.update({"name":"yuanhao"},{"$push":{"hobbies":"read"}})#2、為名字為yuanhao的人一次添加多個(gè)愛(ài)好tea,dancing #$each意思是循環(huán)數(shù)組中的每一個(gè)元素添加到數(shù)組中 db.user.update({"name":"yuanhao"},{"$push":{"hobbies":{"$each":["tea","dancing"]} }})按照位置且只能從開(kāi)頭或結(jié)尾刪除元素:$pop #3、{"$pop":{"key":1}} 從數(shù)組末尾刪除一個(gè)元素 db.user.update({"name":"yuanhao"},{"$pop":{"hobbies":1} })#4、{"$pop":{"key":-1}} 從頭部刪除 db.user.update({"name":"yuanhao"},{"$pop":{"hobbies":-1} })#5、按照條件刪除元素,:"$pull" 把符合條件的統(tǒng)統(tǒng)刪掉,而$pop只能從兩端刪 db.user.update({'addr.country':"China"},{"$pull":{"hobbies":"read"} }, {"multi":true } )

?

(4)避免添加重復(fù):"$addToSet",就是插入相同的記錄時(shí)查詢也只顯示一個(gè)

#避免添加重復(fù):"$addToSet" db.urls.insert({"_id":1,"urls":[]})db.urls.update({"_id":1},{"$addToSet":{"urls":'http://www.baidu.com'}}) db.urls.update({"_id":1},{"$addToSet":{"urls":'http://www.baidu.com'}}) db.urls.update({"_id":1},{"$addToSet":{"urls":'http://www.baidu.com'}})db.urls.update({"_id":1},{"$addToSet":{"urls":{"$each":['http://www.baidu.com','http://www.baidu.com','http://www.xxxx.com']}}} )

?

(5)其它

#1、了解:限制大小"$slice",只留最后n個(gè) db.user.update({"_id":5},{"$push":{"hobbies":{"$each":["read",'music','dancing'],"$slice":-2}} })#2、了解:排序The $sort element value must be either 1 or -1" db.user.update({"_id":5},{"$push":{"hobbies":{"$each":["read",'music','dancing'],"$s
lice
":-1,"$sort":-1}} })#注意:不能只將"$slice"或者"$sort"與"$push"配合使用,且必須使用"$eah"

?

?

?

三、刪除

#1、刪除多個(gè)中的第一個(gè) db.user.deleteOne({ 'age': 8 })#2、刪除國(guó)家為China的全部 db.user.deleteMany( {'addr.country': 'China'} ) #3、刪除全部 db.user.deleteMany({})

?

?

補(bǔ)充:有待驗(yàn)證

#專門做覆蓋的活 db.t2.save({'name':'whl'},{'name':'wwww'})#有就覆蓋,沒(méi)有就增加

?

轉(zhuǎn)載于:https://www.cnblogs.com/wanghl1011/articles/8298516.html

總結(jié)

以上是生活随笔為你收集整理的1月16日学习内容整理:存储库MongoDB之文档的增删改查操作补充的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。