MongoDB 第5章 MongoDB高級(jí)查詢(mongodb數(shù)據(jù)庫(kù))
本章將結(jié)合實(shí)際應(yīng)用,重點(diǎn)闡述一些實(shí)際工作中最常用的方法。
面向文檔的NoSQL數(shù)據(jù)庫(kù)主要解決的問(wèn)題不是高性能的并發(fā)讀寫,而是保證海量數(shù)據(jù)存儲(chǔ)的同時(shí),具有良好的查詢性能。
MongoDB最大的特點(diǎn)是他支持的查詢語(yǔ)言非常強(qiáng)大,其語(yǔ)法有點(diǎn)類似于面向?qū)ο蟮牟樵冋Z(yǔ)言,幾乎可以實(shí)現(xiàn)類似關(guān)系數(shù)據(jù)庫(kù)單表查詢的絕大部分功能,而且還支持對(duì)數(shù)據(jù)建立索引。
最后由于MongoDB可以支持復(fù)雜的數(shù)據(jù)結(jié)構(gòu),而且?guī)в袕?qiáng)大的數(shù)據(jù)查詢功能,因此非常受到歡迎,很多項(xiàng)目都考慮用MongoDB來(lái)替代MySQL等傳統(tǒng)數(shù)據(jù)庫(kù)來(lái)實(shí)現(xiàn)不是特別復(fù)雜的web應(yīng)用,由于數(shù)據(jù)量實(shí)在太大,所以遷移到MongoDB上面,數(shù)據(jù)查詢的速度得到非常顯著顯著提升。
下面將介紹一些高級(jí)查詢語(yǔ)法。
1.1.、條件操作符
<、<=、>、>=這幾個(gè)操作符不用多解釋了,最常用的也是最簡(jiǎn)單的。
> db.xuz.find({"j":{$gt:10}}); //大于:field>value
{ "_id" : ObjectId("54a8a620e708df7187eb2de2"), "x" : 5, "j" : 11 }
{ "_id" : ObjectId("54a8a620e708df7187eb2de3"), "x" : 5, "j" : 12 }
{ "_id" : ObjectId("54a8a620e708df7187eb2de4"), "x" : 5, "j" : 13 }
> db.xuz.find({"j":{$lt:10}});//小于:field { "_id" : ObjectId("54a8a5a427681683ca2c2466"), "x" : 5, "j" : 1 } { "_id" : ObjectId("54a8a5a427681683ca2c2467"), "x" : 5, "j" : 2 } { "_id" : ObjectId("54a8a5a427681683ca2c2468"), "x" : 5, "j" : 3 } > db.xuz.find({"j":{$gte:10}});//大于等于:field>=value { "_id" : ObjectId("54a8a5a427681683ca2c246f"), "x" : 5, "j" : 10 } { "_id" : ObjectId("54a8a620e708df7187eb2de1"), "x" : 5, "j" : 10 } { "_id" : ObjectId("54a8a620e708df7187eb2de2"), "x" : 5, "j" : 11 } { "_id" : ObjectId("54a8a620e708df7187eb2de3"), "x" : 5, "j" : 12 } > db.xuz.find({"j":{$lte:10}});//小于等于:field<=value { "_id" : ObjectId("54a8a5a427681683ca2c2466"), "x" : 5, "j" : 1 } { "_id" : ObjectId("54a8a5a427681683ca2c2467"), "x" : 5, "j" : 2 } { "_id" : ObjectId("54a8a5a427681683ca2c2468"), "x" : 5, "j" : 3 } { "_id" : ObjectId("54a8a5a427681683ca2c2469"), "x" : 5, "j" : 4 } { "_id" : ObjectId("54a8a5a427681683ca2c246a"), "x" : 5, "j" : 5 } { "_id" : ObjectId("54a8a5a427681683ca2c246b"), "x" : 5, "j" : 6 } { "_id" : ObjectId("54a8a5a427681683ca2c246c"), "x" : 5, "j" : 7 } { "_id" : ObjectId("54a8a5a427681683ca2c246d"), "x" : 5, "j" : 8 } { "_id" : ObjectId("54a8a5a427681683ca2c246e"), "x" : 5, "j" : 9 } { "_id" : ObjectId("54a8a5a427681683ca2c246f"), "x" : 5, "j" : 10 } 如果要同時(shí)滿足多個(gè)條件,可以這樣做。 > db.xuz.find({"j":{$gt:5,$lt:10}});//value1 { "_id" : ObjectId("54a8a5a427681683ca2c246b"), "x" : 5, "j" : 6 } { "_id" : ObjectId("54a8a5a427681683ca2c246c"), "x" : 5, "j" : 7 } { "_id" : ObjectId("54a8a5a427681683ca2c246d"), "x" : 5, "j" : 8 } { "_id" : ObjectId("54a8a5a427681683ca2c246e"), "x" : 5, "j" : 9 } 1.2、$all匹配所有 這個(gè)操作符跟SQL語(yǔ)法的in類似,但不同的是,in只需滿足()內(nèi)的某一個(gè)值即可,而$all必須滿足[]內(nèi)的所有值,比如: > db.xuz.find({age:{$all:[6,8]}}) { "_id" : ObjectId("54a8bc71587fb1134affd9cf"), "name" : "zhangsan", "age" : [ 6, 7, 8 ] } 但是查詢不出 { "_id" : ObjectId("54a8bc71587fb1134affd9cf"), "name" : "zhangsan", "age" : [ 6, 7, 9] } 1.3、$exists判斷字段是否存在 查詢所有存在的age字段的記錄: > db.xuz.find({age:{$exists:true}}) { "_id" : ObjectId("54a8bc71587fb1134affd9cf"), "name" : "zhangsan", "age" : [ 6, 7, 8 ] } { "_id" : ObjectId("54a8bc76587fb1134affd9d0"), "name" : "zhangsan", "age" : [ 6, 7, 9 ] } > 查詢所有不存在name字段的記錄: > db.xuz.find({name:{$exists:false}}); { "_id" : ObjectId("54a8a5042db3e1b27d0e5204"), "x" : 4 } { "_id" : ObjectId("54a8a5a427681683ca2c2466"), "x" : 5, "j" : 1 } { "_id" : ObjectId("54a8a5a427681683ca2c2467"), "x" : 5, "j" : 2 } { "_id" : ObjectId("54a8a5a427681683ca2c2468"), "x" : 5, "j" : 3 } { "_id" : ObjectId("54a8a5a427681683ca2c2469"), "x" : 5, "j" : 4 } { "_id" : ObjectId("54a8a5a427681683ca2c246a"), "x" : 5, "j" : 5 } { "_id" : ObjectId("54a8a5a427681683ca2c246b"), "x" : 5, "j" : 6 } { "_id" : ObjectId("54a8a5a427681683ca2c246c"), "x" : 5, "j" : 7 } { "_id" : ObjectId("54a8a5a427681683ca2c246d"), "x" : 5, "j" : 8 } { "_id" : ObjectId("54a8a5a427681683ca2c246e"), "x" : 5, "j" : 9 } { "_id" : ObjectId("54a8a5a427681683ca2c246f"), "x" : 5, "j" : 10 } 再比如:c1表的數(shù)據(jù)如下: > db.c1.find(); { "_id" : ObjectId("54a8bd47587fb1134affd9d1"), "age" : 20, "length" : 30 } { "_id" : ObjectId("54a8bd51587fb1134affd9d2"), "age_1" : 20, "length_1" : 30 } 查詢存在age字段的數(shù)據(jù) > db.c1.find({age:{$exists:true}}) { "_id" : ObjectId("54a8bd47587fb1134affd9d1"), "age" : 20, "length" : 30 } 只能顯示出有age字段的數(shù)據(jù),age_1的數(shù)據(jù)并沒(méi)有顯示出來(lái)。 1.4、NULL值處理 NULL值的處理稍微有一點(diǎn)奇怪,具體看下面的樣例數(shù)據(jù): > db.c2.find(); { "_id" : ObjectId("54a8bde4587fb1134affd9d3"), "nage" : "wangwu", "age" : null } { "_id" : ObjectId("54a8bdf7587fb1134affd9d4"), "name" : "zhangsan", "age" : 23 } { "_id" : ObjectId("54a8be09587fb1134affd9d5"), "name" : "zhaoliu", "addr" : 23 } 其中wangwu的age字段為空,zhaoliu沒(méi)有age字段,我們想找到age為空的行,具體如下: > db.c2.find({age:null}) { "_id" : ObjectId("54a8bde4587fb1134affd9d3"), "nage" : "wangwu", "age" : null } { "_id" : ObjectId("54a8be09587fb1134affd9d5"), "name" : "zhaoliu", "addr" : 23 } 但是我們以為只能找到wangwu,卻zhaoliu也被找出來(lái)了,所以null不僅能找到它自身,連不存在的age字段的記錄也找出來(lái)了,那么怎么樣才能只找到wangwu呢?我們用exists來(lái)限制一下即可: > db.c2.find({age:{$in:[null],$exists:true}}) { "_id" : ObjectId("54a8bde4587fb1134affd9d3"), "nage" : "wangwu", "age" : null } 這樣如我們期望一樣,只有wangwu被找出來(lái)了。 1.5、$mod取模運(yùn)算 查詢age取模10等于0的數(shù)據(jù) > db.c1.find({age:{$mod:[10,0]}}) { "_id" : ObjectId("54a8bd47587fb1134affd9d1"), "age" : 20, "length" : 30 } 在比如,c1表數(shù)據(jù)如下: > db.c1.find(); { "_id" : ObjectId("54a8bd47587fb1134affd9d1"), "age" : 20, "length" : 30 } { "_id" : ObjectId("54a8bd51587fb1134affd9d2"), "age_1" : 20, "length_1" : 30 } { "_id" : ObjectId("54a8bf2b587fb1134affd9d6"), "age" : 21, "length" : 31 } { "_id" : ObjectId("54a8bf31587fb1134affd9d7"), "age" : 22, "length" : 35 } 查詢age取模10等于1的數(shù)據(jù) > db.c1.find({age:{$mod:[10,1]}}) { "_id" : ObjectId("54a8bf2b587fb1134affd9d6"), "age" : 21, "length" : 31 } 可以看出只顯示出了age取模10等于1的數(shù)據(jù),其他不符合規(guī)則的數(shù)據(jù)并沒(méi)有顯示出來(lái)。 1.6、$ne不等于 查詢age的值不等于20的數(shù)據(jù)。 c1表的數(shù)據(jù)如下: > db.c1.find(); { "_id" : ObjectId("54a8bd47587fb1134affd9d1"), "age" : 20, "length" : 30 } { "_id" : ObjectId("54a8bd51587fb1134affd9d2"), "age_1" : 20, "length_1" : 30 } { "_id" : ObjectId("54a8bf2b587fb1134affd9d6"), "age" : 21, "length" : 31 } { "_id" : ObjectId("54a8bf31587fb1134affd9d7"), "age" : 22, "length" : 35 } 查詢age的值不等于20的數(shù)據(jù)。 > db.c1.find({age:{$ne:20}}) { "_id" : ObjectId("54a8bd51587fb1134affd9d2"), "age_1" : 20, "length_1" : 30 } { "_id" : ObjectId("54a8bf2b587fb1134affd9d6"), "age" : 21, "length" : 31 } { "_id" : ObjectId("54a8bf31587fb1134affd9d7"), "age" : 22, "length" : 35 } 可以看出只顯示出了age不等于20的數(shù)據(jù),其他不符合規(guī)則的數(shù)據(jù)并沒(méi)有顯示出來(lái)。 1.7、$in包含 與SQL標(biāo)準(zhǔn)語(yǔ)法的用途一樣,即要查詢的是一系列的枚舉值的范圍。 比如c1表的數(shù)據(jù)如下: > db.c1.find(); { "_id" : ObjectId("54a8bd47587fb1134affd9d1"), "age" : 20, "length" : 30 } { "_id" : ObjectId("54a8bd51587fb1134affd9d2"), "age_1" : 20, "length_1" : 30 } { "_id" : ObjectId("54a8bf2b587fb1134affd9d6"), "age" : 21, "length" : 31 } { "_id" : ObjectId("54a8bf31587fb1134affd9d7"), "age" : 22, "length" : 35 } 查詢age的值在21,22范圍內(nèi)的數(shù)據(jù)。 > db.c1.find({age:{$in:[21,22]}}) { "_id" : ObjectId("54a8bf2b587fb1134affd9d6"), "age" : 21, "length" : 31 } { "_id" : ObjectId("54a8bf31587fb1134affd9d7"), "age" : 22, "length" : 35 } 可以看出只顯示出了age等于21或者22的數(shù)據(jù),其他不符合規(guī)則的數(shù)據(jù)并沒(méi)有顯示出來(lái)。 1.8、$nin不包含 與SQL標(biāo)準(zhǔn)語(yǔ)法的用途是一樣的,既要查詢的數(shù)據(jù)在一系列的枚舉范圍外。 比如c1表的數(shù)據(jù)如下: > db.c1.find(); { "_id" : ObjectId("54a8bd47587fb1134affd9d1"), "age" : 20, "length" : 30 } { "_id" : ObjectId("54a8bd51587fb1134affd9d2"), "age_1" : 20, "length_1" : 30 } { "_id" : ObjectId("54a8bf2b587fb1134affd9d6"), "age" : 21, "length" : 31 } { "_id" : ObjectId("54a8bf31587fb1134affd9d7"), "age" : 22, "length" : 35 } 查詢age的值在21,22范圍外的數(shù)據(jù) > db.c1.find({age:{$nin:[21,22]}}) { "_id" : ObjectId("54a8bd47587fb1134affd9d1"), "age" : 20, "length" : 30 } { "_id" : ObjectId("54a8bd51587fb1134affd9d2"), "age_1" : 20, "length_1" : 30 } 可以看出只顯示出了age不等于21或者22的數(shù)據(jù),其他不符合規(guī)則的數(shù)據(jù)并沒(méi)有顯示出來(lái)。 1.9、$size數(shù)組元素的個(gè)數(shù) 對(duì)于c3表的數(shù)據(jù)如下: > db.c3.find(); { "_id" : ObjectId("54a8c156587fb1134affd9d8"), "age" : [ 6, 7, 8 ] } { "_id" : ObjectId("54a8c160587fb1134affd9d9"), "age" : [ 6, 7 ] } { "_id" : ObjectId("54a8c163587fb1134affd9da"), "age" : [ 6, 7, 9 ] } { "_id" : ObjectId("54a8c166587fb1134affd9db"), "age" : [ 6, 7, 9, 10 ] } 查詢age字段size為3的記錄: > db.c3.find({age:{$size:3}}) { "_id" : ObjectId("54a8c156587fb1134affd9d8"), "age" : [ 6, 7, 8 ] } { "_id" : ObjectId("54a8c163587fb1134affd9da"), "age" : [ 6, 7, 9 ] } 可以看出只顯示出了age的size為3的數(shù)據(jù),其他不符合規(guī)則的數(shù)據(jù)并沒(méi)有顯示出來(lái)。 1.10、正則表達(dá)式 對(duì)于c4表數(shù)據(jù)如下: > db.c4.find(); { "_id" : ObjectId("54a8c1e6587fb1134affd9dc"), "name" : "Boy" } { "_id" : ObjectId("54a8c1eb587fb1134affd9dd"), "name" : "Tom" } { "_id" : ObjectId("54a8c1ef587fb1134affd9de"), "name" : "Joe" } 查詢name不以B開(kāi)頭的數(shù)據(jù): > db.c4.find({name:{$not:/^T.*/}}) { "_id" : ObjectId("54a8c1e6587fb1134affd9dc"), "name" : "Boy" } { "_id" : ObjectId("54a8c1ef587fb1134affd9de"), "name" : "Joe" } 可以看出只顯示出了name不等于Boy的數(shù)據(jù),Boy的數(shù)據(jù)并沒(méi)有顯示,因?yàn)樗喜樵円?guī)則。 1.11、JavaScript查詢和$where查詢 比如c1表的數(shù)據(jù)如下: > db.c1.find() { "_id" : ObjectId("54a8bd47587fb1134affd9d1"), "age" : 20, "length" : 30 } { "_id" : ObjectId("54a8bd51587fb1134affd9d2"), "age_1" : 20, "length_1" : 30 } { "_id" : ObjectId("54a8bf2b587fb1134affd9d6"), "age" : 21, "length" : 31 } { "_id" : ObjectId("54a8bf31587fb1134affd9d7"), "age" : 22, "length" : 35 } 查詢age大于20的數(shù)據(jù),下面各種方法殊途同歸。 > db.c1.find({age:{$gt:20}}) { "_id" : ObjectId("54a8bf2b587fb1134affd9d6"), "age" : 21, "length" : 31 } { "_id" : ObjectId("54a8bf31587fb1134affd9d7"), "age" : 22, "length" : 35 } > > db.c1.find({$where:"this.age>20"}) { "_id" : ObjectId("54a8bf2b587fb1134affd9d6"), "age" : 21, "length" : 31 } { "_id" : ObjectId("54a8bf31587fb1134affd9d7"), "age" : 22, "length" : 35 } > > db.c1.find("this.age>20") { "_id" : ObjectId("54a8bf2b587fb1134affd9d6"), "age" : 21, "length" : 31 } { "_id" : ObjectId("54a8bf31587fb1134affd9d7"), "age" : 22, "length" : 35 } > function (){return this.age>20;} > db.c1.find(f); { "_id" : ObjectId("54a8bf2b587fb1134affd9d6"), "age" : 21, "length" : 31 } { "_id" : ObjectId("54a8bf31587fb1134affd9d7"), "age" : 22, "length" : 35 } > 1.12、count查詢記錄條數(shù) count查詢記錄條數(shù)。 > db.c1.find().count(); 4 返回c1表中所有數(shù)據(jù)的記錄數(shù)。 1.13、skip限制返回記錄的起點(diǎn) 從3條記錄開(kāi)始,返回5條記錄(limit3,5) xuz表中總共有64條數(shù)據(jù): > db.xuz.find().count(); 64 從第三條開(kāi)始,查詢出5條記錄: > db.xuz.find().skip(3).limit(5) { "_id" : ObjectId("54a8a5a427681683ca2c2468"), "x" : 5, "j" : 3 } { "_id" : ObjectId("54a8a5a427681683ca2c2469"), "x" : 5, "j" : 4 } { "_id" : ObjectId("54a8a5a427681683ca2c246a"), "x" : 5, "j" : 5 } { "_id" : ObjectId("54a8a5a427681683ca2c246b"), "x" : 5, "j" : 6 } { "_id" : ObjectId("54a8a5a427681683ca2c246c"), "x" : 5, "j" : 7 } > 該實(shí)現(xiàn)在應(yīng)用中可用于分頁(yè)查詢。 1.14、sort排序 c1表中數(shù)據(jù)如下: > db.c1.find(); { "_id" : ObjectId("54a8bd47587fb1134affd9d1"), "age" : 20, "length" : 30 } { "_id" : ObjectId("54a8bd51587fb1134affd9d2"), "age_1" : 20, "length_1" : 30 } { "_id" : ObjectId("54a8bf2b587fb1134affd9d6"), "age" : 21, "length" : 31 } { "_id" : ObjectId("54a8bf31587fb1134affd9d7"), "age" : 22, "length" : 35 } 以年齡升序asc排序: > db.c1.find().sort({age:1}) { "_id" : ObjectId("54a8bd51587fb1134affd9d2"), "age_1" : 20, "length_1" : 30 } { "_id" : ObjectId("54a8bd47587fb1134affd9d1"), "age" : 20, "length" : 30 } { "_id" : ObjectId("54a8bf2b587fb1134affd9d6"), "age" : 21, "length" : 31 } { "_id" : ObjectId("54a8bf31587fb1134affd9d7"), "age" : 22, "length" : 35 } 以年齡降序排序: > db.c1.find().sort({age:-1}) { "_id" : ObjectId("54a8bf31587fb1134affd9d7"), "age" : 22, "length" : 35 } { "_id" : ObjectId("54a8bf2b587fb1134affd9d6"), "age" : 21, "length" : 31 } { "_id" : ObjectId("54a8bd47587fb1134affd9d1"), "age" : 20, "length" : 30 } { "_id" : ObjectId("54a8bd51587fb1134affd9d2"), "age_1" : 20, "length_1" : 30 } 1.15、游標(biāo) 像大多數(shù)數(shù)據(jù)庫(kù)產(chǎn)品一樣,MongoDB也是用游標(biāo)來(lái)循環(huán)處理每一條結(jié)果數(shù)據(jù),具體語(yǔ)法如下: > for(var c=db.c1.find();c.hasNext();){printjson(c.next())} { "_id" : ObjectId("54a8bd47587fb1134affd9d1"), "age" : 20, "length" : 30 } { "_id" : ObjectId("54a8bd51587fb1134affd9d2"), "age_1" : 20, "length_1" : 30 } { "_id" : ObjectId("54a8bf2b587fb1134affd9d6"), "age" : 21, "length" : 31 } { "_id" : ObjectId("54a8bf31587fb1134affd9d7"), "age" : 22, "length" : 35 } > MongoDB還有另外一種方式來(lái)處理游標(biāo) > db.c1.find().forEach(function(u){printjson(u);}) { "_id" : ObjectId("54a8bd47587fb1134affd9d1"), "age" : 20, "length" : 30 } { "_id" : ObjectId("54a8bd51587fb1134affd9d2"), "age_1" : 20, "length_1" : 30 } { "_id" : ObjectId("54a8bf2b587fb1134affd9d6"), "age" : 21, "length" : 31 } { "_id" : ObjectId("54a8bf31587fb1134affd9d7"), "age" : 22, "length" : 35 } > 1.16、存儲(chǔ)過(guò)程 MongoDB為很多問(wèn)題提供了一系列的解決方案,針對(duì)于其他數(shù)據(jù)庫(kù)特性,它仍然毫不遜色,表現(xiàn)非比尋常。 MongoDB同樣支持存儲(chǔ)過(guò)程,關(guān)于存儲(chǔ)過(guò)程你需要知道的第一件事就是它是用javaScript來(lái)些的,也許這會(huì)讓你很奇怪,為什么它用javaScript來(lái)寫,但實(shí)際上它會(huì)讓你非常滿意,MongoDB存儲(chǔ)過(guò)程是存儲(chǔ)在db.system.js表中,我們想象一個(gè)簡(jiǎn)單的sql自定義函數(shù)如下: function addNumbers(x,y){ return x+y; } 下面我們將這個(gè)SQL自定義函數(shù)轉(zhuǎn)換為MongoDB的存儲(chǔ)過(guò)程: > db.system.js.save({_id:"addNumbers",value:function(x,y){return x+y;}}); WriteResult({ "nMatched" : 0, "nUpserted" : 1, "nModified" : 0, "_id" : "addNumbers" }) > 存儲(chǔ)過(guò)程可以被查看,修改和刪除,所以我們用find來(lái)查看一下是否這個(gè)存儲(chǔ)過(guò)程已經(jīng)被創(chuàng)建上了。 > db.system.js.find(); { "_id" : "addNumbers", "value" : function (x,y){return x+y;} } > 下面我們來(lái)實(shí)際調(diào)用一下這個(gè)存儲(chǔ)過(guò)程: > db.eval('addNumbers(3,4.2)'); 7.2 > db.eval()是一個(gè)比較奇怪的東西,我們可以將存儲(chǔ)過(guò)程的邏輯直接在里面并同時(shí)調(diào)用,而無(wú)需事先聲明存儲(chǔ)過(guò)程的邏輯。 > db.eval(function(){return 3+2;}); 5 > 從上面可以看出,MongoDB的存儲(chǔ)過(guò)程可以方便的完成算術(shù)運(yùn)算,但其它數(shù)據(jù)庫(kù)產(chǎn)品在存儲(chǔ)過(guò)程中可以處理數(shù)據(jù)庫(kù)內(nèi)部的一些事情,比如取出某張表的數(shù)據(jù)量等等操作,這些MongoDB能做到嗎?答案是肯定的,MongoDB可以輕而易舉的實(shí)現(xiàn),如下實(shí)例: > db.system.js.save({_id:"get_count",value:function(){return db.c1.count();}}); WriteResult({ "nMatched" : 0, "nUpserted" : 1, "nModified" : 0, "_id" : "get_count" }) > db.eval('get_count()') 4 可以看到存儲(chǔ)過(guò)程可以很輕松的操作表。 至此MongoDB的高級(jí)查詢相關(guān)的一些特性介紹完畢。 MongoDB SQL 數(shù)據(jù)庫(kù)
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。