国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

頭歌 · NoSQL系列課程 · Neo4J / MongoDB 實(shí)驗(yàn)

這篇具有很好參考價(jià)值的文章主要介紹了頭歌 · NoSQL系列課程 · Neo4J / MongoDB 實(shí)驗(yàn)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

科研部建設(shè)中,覆蓋歌云端實(shí)驗(yàn)平臺(tái)對(duì)于Neoj4、MongoDB?的實(shí)驗(yàn)項(xiàng)目

目錄

目錄

?編輯

Neo4j? 實(shí)驗(yàn)一、二

MonGoDB實(shí)驗(yàn)三、四

實(shí)驗(yàn)五六、redis


? 文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-729970.html

Neo4j? 實(shí)驗(yàn)一、二

//NoSQL專項(xiàng)


1. 第1關(guān):創(chuàng)建第一個(gè)Neo4j數(shù)據(jù)庫(kù)節(jié)點(diǎn)
      CREATE (
       TomC:Person 
       {
         name:'Tom Cruise', 
         born:1962
       }
     )



2. 第2關(guān):一次創(chuàng)建多個(gè)演員節(jié)點(diǎn)
   UNWIND [
        {name:'Tom Hanks',born:1956}, 
        {name:'Keanu Reeves',born:1964},
        {name:'Tom Cruise',born:1962}
    ] AS row

    CREATE (p:Person) 
    SET p.name=row.name, p.born=row.born 



3. 第3關(guān):一次創(chuàng)建多個(gè)電影節(jié)點(diǎn)
UNWIND [
    {title:"You've Got Mail",       released:1998,tagline:'At odds in life... in love on-line.'}, 
    {title:'Sleepless in Seattle',  released:1993,tagline:'What if someone you never met, someone you never saw, someone you never knew was the only someone for you?'}, 
    {title:'The Da Vinci Code',     released:2006,tagline:'Break The Codes'}
] AS row
CREATE (m:Movie) SET m.title=row.title, m.released=row.released , m.tagline=row.tagline 




4. 第4關(guān):查找所有標(biāo)簽為Person的節(jié)點(diǎn)
    MATCH (n:Person) 
    RETURN n

5. 第5關(guān):查找名字為T(mén)om Cruise的節(jié)點(diǎn)
    MATCH (n) 
    WHERE n.name = 'Tom Cruise' 
    RETURN n


6. 第6關(guān):查找數(shù)據(jù)庫(kù)中發(fā)行年在1990與2000之間的電影
    MATCH (n:Movie) 
    WHERE n.released > 1900 and n.released <2000
    RETURN n
查找數(shù)據(jù)庫(kù)中發(fā)行年在1990與2000之間的電影。


7. 第7關(guān):修改節(jié)點(diǎn)的屬性
    MATCH(n)
    WHEREID(n)= 116  
    SET n.age = 40
    RETURN n
在數(shù)據(jù)庫(kù)中查找   ID為116    的節(jié)點(diǎn),修改或新建age屬性,并賦值為40。
    MATCH(n)
    WHERE name(n)= 'Tom Cruise' 
    SET n.gender = 'male'
    SET n.roles = 'Forrest Gump' 
修改   名字為T(mén)om Cruise的節(jié)點(diǎn)    的gender屬性為male,roles屬性為Forrest Gump。
    MATCH(n)
    WHERE n.name= 'Tom Cruise' 
    SET n.gender = 'male'
    SET n.roles = 'Forrest Gump' 


8. 第8關(guān):為節(jié)點(diǎn)增加標(biāo)簽
    MATCH (n) 
    WHERE ID(n)= 116  
    SET n : Actor 
    RETURN n
在數(shù)據(jù)庫(kù)中查找ID為116的節(jié)點(diǎn),為節(jié)點(diǎn)n增加Actor標(biāo)簽。
    MATCH (n) 
    WHERE n.name = 'Tom Cruise'
    SET n : Actor 
為T(mén)om Cruise節(jié)點(diǎn)增加標(biāo)簽Actor。




9. 第9關(guān):刪除節(jié)點(diǎn)屬性
    MATCH (yyds{name:’Tiger’}) 
    REMOVE yyds.age 
    return yyds
在數(shù)據(jù)庫(kù)中查找name為T(mén)iger的節(jié)點(diǎn),刪除其age屬性。
    MATCH (t) 
    where t.name = 'Tom Cruise'
    REMOVE t.gender
刪除Tom Cruise節(jié)點(diǎn)的gender屬性。





10. 第10關(guān):刪除節(jié)點(diǎn)標(biāo)簽
    MATCH (n)
    WHERE ID(n)= 116  
    REMOVE n : Actor
    RETURN n
在數(shù)據(jù)庫(kù)中查找ID為116的節(jié)點(diǎn),刪除節(jié)點(diǎn)n的Actor標(biāo)簽。
    MATCH (n)
    WHERE n.name = 'Tom Cruise' 
    REMOVE n : Actor
刪除Tom Cruise節(jié)點(diǎn)的Actor標(biāo)簽。









1. 第1關(guān):增加節(jié)點(diǎn)與聯(lián)系
    CREATE  
        (<node1>:<label1>)-
            [<relationship1>:<relationship-label>]->
        (<node2>:<label2>)
    RETURN <relationship>
功能:創(chuàng)建一個(gè)新節(jié)點(diǎn)node1,node2,并在兩個(gè)節(jié)點(diǎn)間建立聯(lián)系relationship1。
    CREATE
     (fb1:Student{name:"Tom"})-
        [like:LIKES]->
    (fb2:Student{name:"Jerry"})
在數(shù)據(jù)庫(kù)中創(chuàng)建名稱為T(mén)om標(biāo)簽是Student的節(jié)點(diǎn)、名稱為Jerry標(biāo)簽是Student的節(jié)點(diǎn),并在Tom和Jerry兩個(gè)節(jié)點(diǎn)之間建立了聯(lián)系,該聯(lián)系的標(biāo)簽為L(zhǎng)IKES。
    CREATE
     (fb1:Person{name:"Tom Hanks",born:1956})-
        [like:ACTED_IN]->
    (fb2:Movie{title:'The Da Vinci Code', released:2006 , tagline:'Break The Codes'})
1)增加標(biāo)簽為Person的節(jié)點(diǎn),其name值為T(mén)om Hanks,born值為1956。
2)增加標(biāo)簽為Movie的節(jié)點(diǎn),其title為'The Da Vinci Code', released值為2006, tagline為'Break The Codes'。
3)在這兩個(gè)節(jié)點(diǎn)之間建立標(biāo)簽為ACTED_IN的聯(lián)系。







2. 第2關(guān):為已有節(jié)點(diǎn)增加聯(lián)系
    MATCH  
        (<node1>:<label1>), (<node2>:<label2>)
    WHERE 
        <condition>
    CREATE 
        (node1)-[<relationship1>:<relationship-label>]->(node2)
功能:匹配節(jié)點(diǎn)node1,node2,并在兩個(gè)節(jié)點(diǎn)間建立聯(lián)系relationship1。
    MATCH
        (fb1:Student{name:"Tom"}),(fb2:Student{name:"Jerry"})
    CREATE 
        (fb1)-[like:LIKES]->(fb2)
在數(shù)據(jù)庫(kù)中查找名稱為T(mén)om標(biāo)簽是Student的節(jié)點(diǎn)、名稱為Jerry標(biāo)簽是Student的節(jié)點(diǎn),并在Tom和Jerry兩個(gè)節(jié)點(diǎn)之間建立了聯(lián)系,該聯(lián)系的標(biāo)簽為L(zhǎng)IKES。
    MATCH
        (fb1:Person{name:"Tom Hanks"}),(fb2:Movie{title:'The Da Vinci Code'})
    CREATE 
        (fb1)-[like:ACTED_IN]->(fb2)
1)查找標(biāo)簽為Person的節(jié)點(diǎn),其name值為T(mén)om Hanks。
2)查找標(biāo)簽為Movie的節(jié)點(diǎn),其title為'The Da Vinci Code'。
3)在這兩個(gè)節(jié)點(diǎn)之間建立標(biāo)簽為ACTED_IN的聯(lián)系。








3. 第3關(guān):查找節(jié)點(diǎn)間聯(lián)系
    MATCH  
    (<node1>:<label1>)-
        [<relationship1>:<relationship-label>]->
    (<node2>:<label2>)
    WHERE <condition>
    RETURN node1,node2,relationship1
功能:先匹配節(jié)點(diǎn)node1,node2及聯(lián)系relationship1,然后返回node1,node2,relationship1。
示例如下:
    MATCH
        (fb1:Student{name:"Tom"})-
            [like:LIKES]->
        (fb2:Student{name:"Jerry"})
     RETURN fb1,fb2,like;
在數(shù)據(jù)庫(kù)中查找名稱為T(mén)om標(biāo)簽是Student的節(jié)點(diǎn)、名稱為Jerry標(biāo)簽是Student的節(jié)點(diǎn)
以及Tom和Jerry兩個(gè)節(jié)點(diǎn)之間的聯(lián)系like,然后返回節(jié)點(diǎn)及聯(lián)系
    MATCH
        (fb1:Person{})-
            [r:ACTED_IN]->
        (fb2:Movie{})
    where fb1.name = "Tom Hanks"
    RETURN r;
1)匹配標(biāo)簽為Person的節(jié)點(diǎn),其name值為T(mén)om Hanks。
2)匹配標(biāo)簽為Movie的節(jié)點(diǎn)。
3)返回符合條件節(jié)點(diǎn)之間標(biāo)簽為ACTED_IN的聯(lián)系。


4. 第4關(guān):刪除節(jié)點(diǎn)間聯(lián)系
    MATCH 
        (fb1:Student{name:"Tom"})- 
            [r:LIKES]-> 
        (fb2:Student{name:"Jerry"}) 
    DELETE r;
在數(shù)據(jù)庫(kù)中查找名稱為T(mén)om標(biāo)簽是Student的節(jié)點(diǎn)、名稱為Jerry標(biāo)簽是Student的節(jié)點(diǎn),以及Tom和Jerry兩個(gè)節(jié)點(diǎn)之間的聯(lián)系like,然后刪除該聯(lián)系。
    MATCH 
        (fb1:Person{name:"Tom Hanks"})- 
            [r:ACTED_IN]-> 
        (fb2:Movie{title:'The Da Vinci Code'}) 
    DELETE r;
請(qǐng)使用MATCH-CREATE語(yǔ)句,
1)查找標(biāo)簽為Person的節(jié)點(diǎn),其name值為T(mén)om Hanks。
2)查找標(biāo)簽為Movie的節(jié)點(diǎn),其title為'The Da Vinci Code'。
3)刪除這兩個(gè)節(jié)點(diǎn)之間標(biāo)簽為ACTED_IN的聯(lián)系。




5. 第5關(guān):為聯(lián)系增加屬性
    MATCH  
       (<node1>:<label1>), (<node2>:<label2>)
    WHERE <condition>
    CREATE (node1)-[<relationship1>:<relationship-label>
      {property1:value1},
      ...
      {propertyn:valuen}]->
      (node2)
功能:匹配節(jié)點(diǎn)node1,node2,并在兩個(gè)節(jié)點(diǎn)間建立聯(lián)系relationship1。
    MATCH
        (fb1:Student{name:"Tom"}),(fb2:Student{name:"Jerry"})
     CREATE 
        (fb1)-
            [like:LIKES{startdate:'2000-1-1'}]->
        (fb2)
在數(shù)據(jù)庫(kù)中查找名稱為T(mén)om標(biāo)簽是Student的節(jié)點(diǎn)、名稱為Jerry標(biāo)簽是Student的節(jié)點(diǎn)
并在Tom和Jerry兩個(gè)節(jié)點(diǎn)之間建立了聯(lián)系,該聯(lián)系的標(biāo)簽為L(zhǎng)IKES,開(kāi)始時(shí)間是2000-1-1。
    MATCH
        (fb1:Person{name:"Tom Hanks"}),(fb2:Movie{title:'The Da Vinci Code'})
     CREATE 
        (fb1)-
            [r1:ACTED_IN{roles:['Dr. Robert Langdon']}]->
        (fb2)
請(qǐng)使用MATCH-CREATE語(yǔ)句,
1)查找標(biāo)簽為Person的節(jié)點(diǎn),其name值為T(mén)om Hanks。
2)查找標(biāo)簽為Movie的節(jié)點(diǎn),其title為'The Da Vinci Code'。
3)在這兩個(gè)節(jié)點(diǎn)之間建立標(biāo)簽為ACTED_IN的聯(lián)系,聯(lián)系屬性是roles:['Dr. Robert Langdon']。







6. 第6關(guān):修改聯(lián)系屬性
    MATCH  
       (<node1>:<label1>)-[<r>:<relationship-label>]->(<node2>:<label2>)
    WHERE <condition>
    SET r.property1 = value1,
      ...
      r.propertyn = valuen;
功能:匹配節(jié)點(diǎn)node1,node2及聯(lián)系r,并未聯(lián)系r設(shè)置一組屬性及值
    MATCH
        (fb1:Student{name:"Tom"})-
            [r1:LIKES]->
        (fb2:Student{name:"Jerry"})
    SET
      r1.startdate = '2000-1-1'
在數(shù)據(jù)庫(kù)中查找名稱為T(mén)om標(biāo)簽是Student的節(jié)點(diǎn)、名稱為Jerry標(biāo)簽是Student的節(jié)點(diǎn)及聯(lián)系like
該聯(lián)系的標(biāo)簽為L(zhǎng)IKES,設(shè)置like聯(lián)系的屬性開(kāi)始時(shí)間是2000-1-1。
    MATCH
        (fb1:Person{name:"Tom Hanks"})-
            [r1:ACTED_IN]->
        (fb2:Movie{title:'The Da Vinci Code'})
    SET
      r1.roles = ['Dr. Robert Langdon']
1)查找標(biāo)簽為Person的節(jié)點(diǎn),其name值為T(mén)om Hanks。
2)查找標(biāo)簽為Movie的節(jié)點(diǎn),其title為'The Da Vinci Code'。
3)查找兩個(gè)節(jié)點(diǎn)之間標(biāo)簽為ACTED_IN的聯(lián)系。
4)設(shè)置聯(lián)系屬性roles的值為['Dr. Robert Langdon']。




7. 第7關(guān):刪除聯(lián)系屬性
示例如下:
    MATCH
        (fb1:Student{name:"Tom"})-
            [like:LIKES]->
        (fb2:Student{name:"Jerry"})
    REMOVE
        like.startdate 
在數(shù)據(jù)庫(kù)中查找名稱為T(mén)om標(biāo)簽是Student的節(jié)點(diǎn)、
名稱為Jerry標(biāo)簽是Student的節(jié)點(diǎn)及聯(lián)系like,
該聯(lián)系的標(biāo)簽為L(zhǎng)IKES,刪除like聯(lián)系的屬性開(kāi)始時(shí)間。
題目要求
    MATCH
        (fb1:Person{name:"Tom Hanks"})-
            [r1:ACTED_IN]->
        (fb2:Movie{title:'The Da Vinci Code'})
    REMOVE
        r1.roles
請(qǐng)使用MATCH-CREATE語(yǔ)句,
1)查找標(biāo)簽為Person的節(jié)點(diǎn),其name值為T(mén)om Hanks。
2)查找標(biāo)簽為Movie的節(jié)點(diǎn),其title為'The Da Vinci Code'。
3)查找兩個(gè)節(jié)點(diǎn)之間標(biāo)簽為ACTED_IN的聯(lián)系。
4)刪除聯(lián)系屬性roles。



8. 第8關(guān):查找節(jié)點(diǎn)的鄰接節(jié)點(diǎn)
查找聯(lián)系的一般語(yǔ)法如下:
    MATCH  
       (<node1>:<label1>)-[<relationship1>:<relationship-label>]->(<node2>:<label2>)
    WHERE <condition>
    RETURN node1,node2
功能:先匹配節(jié)點(diǎn)node1,node2及聯(lián)系relationship1,然后返回node1,node2。
node2即是node1的鄰接節(jié)點(diǎn)。
示例如下:
    MATCH
    (fb1:Person{name:"Tom Hanks"})
        -[s:Study]->
    (fb2:Database)
    RETURN fb2;
在數(shù)據(jù)庫(kù)中查找名稱為T(mén)om、標(biāo)簽是Student的節(jié)點(diǎn),再查找Tom所學(xué)的數(shù)據(jù)庫(kù)課程
    MATCH
        (n:Person{name:"Tom Hanks"})
            -[r1:ACTED_IN]->
        (m:Movie)
    RETURN m.title,r1.roles
    order by m.title
    limit 10
查詢Tom Hanks參演過(guò)電影
返回電影title、及其角色roles
并按照title排序
最終結(jié)果返回前10個(gè)




9. 查找節(jié)點(diǎn)的共同鄰接節(jié)點(diǎn)
    MATCH
        (fb1:Student{name:"Tom"})
            -[s:Study]->
                (r1:Database{name:"Neo4j"})
            <-[s:Study]-
        (fb2:Student)
     RETURN fb1,r1,fb2;
在數(shù)據(jù)庫(kù)中查找名稱為T(mén)om、標(biāo)簽是Student的節(jié)點(diǎn)
再查找與Tom一起學(xué)習(xí)neo4j的學(xué)生。
    MATCH
        (fb1:Person{name:"Tom Hanks"})
            -[s1:ACTED_IN]->
                (m:Movie{})
            <-[r2:ACTED_IN]-
        (fb2:Person)
     RETURN m.title , fb2.name , r2.roles
     order by m.title , fb2.name
     limit 10
查詢和Tom Hanks共同參演過(guò)電影的演員
返回電影title、共同參演的演員name及其角色roles
并按照title,name排序,最終結(jié)果返回前10個(gè)



10. 最短路徑
    MATCH
        p=shortestPath(
            (fb1:Student{name:"Tom"})
                -[*1..4]-
            (fb2:Student{name:"Jerry"})
        )
    RETURN p;
在數(shù)據(jù)庫(kù)中查找Tom和Jerry之間的最短路徑。
    MATCH
        P=shortestPath(
            (fb1:Person{name:"Tom Hanks"})
                -[*1..4]-
            (fb2:Person{name:"Tom Cruise"})
        )
    RETURN P;
1)查詢Tom Hanks和Tom Cruise之間5步之內(nèi)的最短路徑。









MonGoDB實(shí)驗(yàn)三、四



第1關(guān):數(shù)據(jù)庫(kù)創(chuàng)建
    創(chuàng)建或切換  use Testdb
    刪除        db.dropDatabase()
    插入        db.Testdb.insert({_id:1,name:"王小明"})
在命令行操作
mongo
use mydb
db.mydb.insert({_id:1,name:"李小紅"})







第2關(guān):創(chuàng)建集合
先進(jìn)入指定數(shù)據(jù)庫(kù),在 Testdb 數(shù)據(jù)庫(kù)中創(chuàng)建創(chuàng)建固定集合 test ,整個(gè)集合空間大小512000KB,文檔最大個(gè)數(shù)為1000個(gè)
    use Testdb
    db.createCollection("test", { capped : true, autoIndexId : true, size : 512000, max : 1000 } )
創(chuàng)建集合命令(推薦):db.集合名.insert()
(注意:一條數(shù)據(jù)用大括號(hào)“ {} ”括起來(lái),多條數(shù)據(jù)用“ [] ”將所有數(shù)據(jù)括起來(lái))
    db.mytest2.insert([{"name" : "王小明","sex":"男"},{"name" : "李小紅","sex":"女"}])
MongoDB 中存儲(chǔ)的文檔 必須 有一個(gè)_id鍵
查詢集合命令:db.集合名.find()
刪除集合命令:db.集合名.drop()
創(chuàng)建數(shù)據(jù)庫(kù) Testdb2,創(chuàng)建集合 t_stu ,內(nèi)容如圖3所示
    mongo
    use Testdb2
    db.createCollection("t_stu", { capped : true, autoIndexId : true, size : 512000, max : 1000 } )    
    db.testdb2.insert([
        {"_id" :1,"name" : "小明","sex":"男","hobbies":["乒乓球","羽毛球"]},
        {"_id" :2,"name" : "小紅","sex":"女","hobbies":["畫(huà)畫(huà)","唱歌"]}
    ])






第3關(guān):文檔操作一
插入文檔命令:db.集合名.insert(文檔)
數(shù)據(jù)定義為一個(gè)變量,之后再插入
    document=({_id:1,
        name: '王小明',
        sex: '男',
        hobbies: ['乒乓球','羽毛球'],
        birthday: '1996-02-14'
    });
    db.person.insert(document)  
update方法    
    db.person2.update({birthday:"1996-02-14"},{$set:{birthday:"1996"}})
.find(). pretty() 可以保持整齊格式輸出

save方法
    db.person3.save({
        "_id" :1,
        "name" : "李小紅",
        "sex" : "女",
        "hobbies" : [
                "畫(huà)畫(huà)",
                "唱歌",
                "跳舞"
        ],
        "birthday" : "1996-06-14"
    })
如果 save() 法也指定了_id,則對(duì)文檔進(jìn)行更新;
未指定_id則會(huì)執(zhí)行插入功能,MongoDB 默認(rèn)自動(dòng)生成一個(gè)不重復(fù)的_id
    update() 方法僅適用于修改某條數(shù)據(jù)中的某個(gè)鍵值;
    save() 方法適用于修改整條數(shù)據(jù)。


mongo
use Testdb3 
    document=({
        _id:1,
        name: '張小華',
        sex: '男',
        phone: '12356986594',
        hobbies: [
                "打籃球",
                "踢足球",
                "唱歌"
        ]
    });
    db.stu1.insert(document)  
    db.stu2.insert(document)  
    db.stu3.insert(document)  

db.stu2.update({phone:"12356986594"},{$set:{phone:"18356971462"}})

    db.stu3.save({
        _id:1,
        name: '張曉曉',
        sex: '女',
        phone: '12365498704',
        hobbies: [
                "跳舞",
                "羽毛球",
                "唱歌"
        ]
    });



第4關(guān):文檔操作二
db.集合名稱.find().pretty()
操作 	格式 	                        范例 	                                    關(guān)系數(shù)據(jù)庫(kù)中類似的語(yǔ)句
等于 	{<key>:<value>} 	            db.stu1.find({"name":"李小紅"}).pretty() 	where name = '李小紅'
小于 	{<key>:{$lt:<value>}} 	        db.stu1.find({"age":{$lt:18}}).pretty() 	where age < 18
小于等于{<key>:{$lte:<value>}} 	        db.stu1.find({"age":{$lte:18}}).pretty() 	where age <= 18
大于 	{<key>:{$gt:<value>}} 	        db.stu1.find({"age":{$gt:18}}).pretty() 	where age > 18
大于等于{<key>:{$gte:<value>}} 	        db.stu1.find({"age":{$gte:18}}).pretty() 	where age >= 18
不等于 	{<key>:{$ne:<value>}} 	        db.stu1.find({"age":{$ne:18}}).pretty() 	where age != 18

and      db.stu1.find({"age":20, "sex":"男"}).pretty()
刪除指定的數(shù)據(jù)                          db.stu1.remove({'age':20})
刪除全部數(shù)據(jù)但是保留集合                 db.remove({})

定義多個(gè)數(shù)據(jù)
    document=([{
        name:'張小華',
        sex:'男',
        age:20,
        phone:'12356986594',
        hobbies:['打籃球','踢足球','唱歌']
    },{
        name:'李小紅',
        sex:'女',
        age:18,
        phone:'12355487536',
        hobbies:['跳舞','唱歌']
    }])
插入集合    db.stu1.insert(document)


測(cè)試開(kāi)始  放入echo內(nèi)

echo "
document=([{
        _id:1,
        name:'西西',
        sex:'女',
        age:23,
        national:'漢族'
    },{
        _id:2,
        name:'東東',
        sex:'男',
        age:20,
        national:'苗族'
    },{
        _id:3,
        name:'北北',
        sex:'男',
        age:19,
        national:'漢族'
    },{
        _id:4,
        name:'南南',
        sex:'女',
        age:15,
        national:'傣族'
    }]);
db.stu1.insert(document);
db.stu2.insert(document);



db.stu1.find({'age':{\$gte:15},'sex':'女'});
db.stu1.find({'national':'苗族'});
db.stu1.find({'age':{\$lt:20},'sex':'男'});
db.stu2.remove({});

"
上述操作共有六條命令,請(qǐng)按要求填入右側(cè)代碼欄 Begin-End 中
每條命令以英文分號(hào)“ ;”號(hào)隔開(kāi)
(由于測(cè)試需要,請(qǐng)?jiān)凇?$ ” 前加 “ \ ” (轉(zhuǎn)義符))。





第1關(guān):數(shù)據(jù)的導(dǎo)入導(dǎo)出

導(dǎo)入數(shù)據(jù)
    mongoimport -d Testdb1 -c score --type csv --headerline --ignoreBlanks --file test.csv
-d Testdb1 :指定將數(shù)據(jù)導(dǎo)入到 Testdb1 數(shù)據(jù)庫(kù);
-c score :將數(shù)據(jù)導(dǎo)入到集合 score ,如果這個(gè)集合之前不存在,會(huì)自動(dòng)創(chuàng)建一個(gè)
    (如果省略 --collection 這個(gè)參數(shù),那么會(huì)自動(dòng)新建一個(gè)以  CSV 文件名為名的集合);
--type csv :文件類型,這里是 CSV;
--headerline :這個(gè)參數(shù)很重要,加上這個(gè)參數(shù)后創(chuàng)建完成后的內(nèi)容會(huì)以 CSV 文件第一行的內(nèi)容為字段名
    (導(dǎo)入json文件不需要這個(gè)參數(shù))
--ignoreBlanks :這個(gè)參數(shù)可以忽略掉 CSV 文件中的空缺值(導(dǎo)入json文件不需要這個(gè)參數(shù));
--file 1.csv :這里就是 CSV 文件的路徑了,需要使用絕對(duì)路徑

導(dǎo)出數(shù)據(jù)
    mongoimport -d Testdb1 -c score --type csv --headerline --ignoreBlanks --file test.csv
    -d Testdb1 :指定將數(shù)據(jù)導(dǎo)入到 Testdb1 數(shù)據(jù)庫(kù);
    -c score :將數(shù)據(jù)導(dǎo)入到集合 score ,如果這個(gè)集合之前不存在,會(huì)自動(dòng)創(chuàng)建一個(gè)
(如果省略 --collection 這個(gè)參數(shù),那么會(huì)自動(dòng)新建一個(gè)以  CSV 文件名為名的集合);
    --type csv :文件類型,這里是 CSV;
    --headerline :這個(gè)參數(shù)很重要,加上這個(gè)參數(shù)后創(chuàng)建完成后的內(nèi)容會(huì)以 CSV 文件第一行的內(nèi)容為字段名
(導(dǎo)入json文件不需要這個(gè)參數(shù))
    --ignoreBlanks :這個(gè)參數(shù)可以忽略掉 CSV 文件中的空缺值(導(dǎo)入json文件不需要這個(gè)參數(shù));
    --file 1.csv :這里就是 CSV 文件的路徑了,需要使用絕對(duì)路徑。

導(dǎo)出 json 格式文件:
        mongoexport -d Testdb1 -c score -o /file.json --type json
        -o /file.json :輸出的文件路徑/(根目錄下)和文件名;
        --type json :輸出的格式,默認(rèn)為 json。

導(dǎo)出 csv 格式的文件:
        mongoexport -d Testdb1 -c score -o /file.json --type csv -f "_id,name,age,sex,major"
        -f :當(dāng)輸出格式為 csv 時(shí),需要指定輸出的字段名。



    將 /home/example 路徑下的文件 student.csv 導(dǎo)入到數(shù)據(jù)庫(kù) mydb1 的 test 集合中;
mongoimport -d mydb1 -c test --type csv --headerline --ignoreBlanks --file /home/example/student.csv

    將數(shù)據(jù)庫(kù) mydb1 的 test 集合以 json 格式導(dǎo)出到 /home/test1.json 的 json 文件中;
mongoexport -d mydb1 -c test -o /home/test1.json --type json

    將數(shù)據(jù)庫(kù) mydb1 的 test 集合以 csv 格式導(dǎo)出到 /home/test1.csv 的 CSV 文件中。
mongoexport -d mydb1 -c test -o /home/test1.csv --type csv -f "_id,name,age,sex,major"









第2關(guān):高級(jí)查詢(一)
匹配所有    db.hobbies.find({hobbies:{$all:["唱歌","羽毛球"]}})
判斷存在    $exists
mod運(yùn)算     db.hobbies.find({age:{$mod:[7,4]}})
包含        db.hobbies.find({age:{$in:[17,20]}})
不包含      db.hobbies.find({age:{$nin:[17,20]}})
長(zhǎng)度查詢    db.hobbies.find({hobbies:{$size:2}})
結(jié)果排序    db.collection.find().sort({_id:1})     #將查詢結(jié)果按照_id升序排序
           db.collection.find().sort({_id:-1})    #將查詢結(jié)果按照_id降序排序



將 /home/example/person.json 文件導(dǎo)入到數(shù)據(jù)庫(kù) mydb2 中的 test 集合中
mongoimport -d mydb2 -c test --type json --file /home/example/person.json  

執(zhí)行查詢命令,查找  所有喜歡唱歌和跳舞的人的信息,      并按照_id升序排序
執(zhí)行查詢命令,查找  所有喜歡羽毛球和跳舞的人的信息,    并按照_id升序排序
執(zhí)行查詢命令,查找  有3個(gè)愛(ài)好的人的信息,               并按照_id升序排序
執(zhí)行查詢命令,查找  文檔中存在 hobbies 字段的人的信息, 并按照_id升序排序
執(zhí)行查詢命令,查找  19歲和23歲的人的信息,              并按照_id升序排序
執(zhí)行查詢命令,查找  不是20歲的人的信息,                并按照_id升序排序
執(zhí)行查詢命令,查找  age 取模9等于2的人的信息,          并按照_id升序排序

echo "
db.test.find({hobbies:{\$all:['唱歌','跳舞']}})          .sort({_id:1});
db.test.find({hobbies:{\$all:['羽毛球','跳舞']}})        .sort({_id:1});
db.test.find({hobbies:{\$size:3}})                      .sort({_id:1});
db.test.find({hobbies:{\$exists:true}})                 .sort({_id:1});
db.test.find({age:{\$in:[19,23]}})                      .sort({_id:1});
db.test.find({age:{\$nin:[20]}})                        .sort({_id:1});
db.test.find({age:{\$mod:[9,2]}})                       .sort({_id:1}); 
"








第3關(guān):高級(jí)查詢(二)
或查詢    db.student.find({$or:[{sex:"男"},{age:18}]})db.student.find({$or:[{sex:"男"},{age:18}]})
且查詢    db.student.find({$and:[{age:{$gt:18}},{age:{$lt:21}}]})
取反      db.student.find({age:{$not:{$gte:20}}})
匹配      db.student.find({major:{$not:/^計(jì).*/}})
數(shù)數(shù)      db.student.find({major:{$not:/^計(jì).*/}}).count()



將 /home/example/person.json 文件導(dǎo)入到數(shù)據(jù)庫(kù) mydb3 中的 test 集合中。
    執(zhí)行查詢命令,查找  年齡為20歲男生的信息            ,并按照_id升序排序
    執(zhí)行查詢命令,查找  年齡為20歲或者性別為男生的信息   ,并按照_id升序排序
    執(zhí)行查詢命令,查找  name = 韓*開(kāi)頭的人的信息        ,并按照_id升序排序
    執(zhí)行查詢命令,查找  年齡19 =< age < 22的人的信息    ,并按照_id升序排序
    執(zhí)行查詢命令,查找  年齡age < 19或age >21的信息     ,并按照_id升序排序
    執(zhí)行查詢命令,查找  name != 韓*開(kāi)頭的人的信息       ,并按照_id升序排序
    執(zhí)行查詢命令,查找  name != 韓*開(kāi)頭的人             的個(gè)數(shù)
    執(zhí)行查詢命令,查找  年齡19 =< age < 22的人          的個(gè)數(shù)


mongoimport -d mydb3 -c test --type json --file /home/example/person.json
echo "
db.test.find({\$and:[{age:20},{sex:'男'}]})                     .sort({_id:1}); 
db.test.find({\$or: [{age:20},{sex:'男'}]})                     .sort({_id:1});
db.test.find({name:/^韓.*/})                                    .sort({_id:1}); 
db.test.find({\$and:[{age:{\$gte:19}},{age:{\$lt:22}}]})        .sort({_id:1});
db.test.find({\$or: [{age:{\$lt:19}} ,{age:{\$gt:21}}]})        .sort({_id:1});
db.test.find({name:{\$not:/^韓.*/}})                            .sort({_id:1}); 
db.test.find({name:{\$not:/^韓.*/}})                            .count();
db.test.find({\$and:[{age:{\$gte:19}},{age:{\$lt:22}}]})        .count();
"







第4關(guān):游標(biāo)

使用循環(huán)插入數(shù)據(jù)
    for(var i=0;i<10000;i++)db.items.insert({_id:i,text:"Hello MongoDB"+i})
申明游標(biāo),ind 的查詢結(jié)果(_id<=5)賦值給了游標(biāo) cursor 變量
    var cursor=db.items.find({_id:{$lte:5}})


mongo
use mydb4

for(var i=0;i<10000;i++)db.test.insert({_id:i,title:"MongoDB"+i,content:"hello"+i});
exit

mongoexport -d mydb4 -c test -f _id.title,content -o /home/test/test4.csv --type csv

實(shí)驗(yàn)五六、redis




【實(shí)驗(yàn)5】


1.聚合管道操作符將文檔定制格式輸出(一)
mongo
use test1

db.educoder.insert({_id:1,course:'Python表達(dá)式問(wèn)題求解實(shí)訓(xùn)',author:'李暾',tags:['Python基礎(chǔ)','求解'],learning_num:1882})
db.educoder.insert({_id:2,course:'Java語(yǔ)言之基本語(yǔ)法',author:'余躍',tags:['Java基礎(chǔ)','語(yǔ)法'],learning_num:814})
db.educoder.insert({_id:3,course:'Python面向?qū)ο缶幊虒?shí)訓(xùn)',author:'李暾',tags:['Python基礎(chǔ)','面向?qū)ο?],learning_num:143})
db.educoder.insert({_id:4,course:'Android綜合實(shí)訓(xùn)之物聯(lián)網(wǎng)移動(dòng)應(yīng)用開(kāi)發(fā)(1)',author:'prophet5',tags:['Android','物聯(lián)網(wǎng)','移動(dòng)開(kāi)發(fā)'],learning_num:207})

db.educoder.aggregate({\$project:{_id:0,course:1,learning_num:1}});
db.educoder.aggregate({\$match:{learning_num:1882}});




2.聚合管道操作符將文檔定制格式輸出(二)?
use test2

db.educoder.insert({_id:1,course:'Python表達(dá)式問(wèn)題求解實(shí)訓(xùn)',author:'李暾',tags:['Python基礎(chǔ)','求解'],learning_num:1882}) 
db.educoder.insert({_id:2,course:'Java語(yǔ)言之基本語(yǔ)法',author:'余躍',tags:['Java基礎(chǔ)','語(yǔ)法'],learning_num:814}) 
db.educoder.insert({_id:3,course:'Python面向?qū)ο缶幊虒?shí)訓(xùn)',author:'李暾',tags:['Python基礎(chǔ)','面向?qū)ο?],learning_num:143}) 
db.educoder.insert({_id:4,course:'Android綜合實(shí)訓(xùn)之物聯(lián)網(wǎng)移動(dòng)應(yīng)用開(kāi)發(fā)(1)',author:'prophet5',tags:['Android','物聯(lián)網(wǎng)','移動(dòng)開(kāi)發(fā)'],learning_num:207}) 

db.educoder.aggregate({\$limit:3});
db.educoder.aggregate({\$sort:{learning_num:1}});
db.educoder.aggregate({\$skip:2});




3.第3關(guān):聚合表達(dá)式對(duì)文檔數(shù)據(jù)進(jìn)行統(tǒng)計(jì)
use test3
 
db.educoder.insert([
{_id:1,course:'Python表達(dá)式問(wèn)題求解實(shí)訓(xùn)',author:'李暾',tags:['Python基礎(chǔ)','求解'],learning_num:1882},
{_id:2,course:'Java語(yǔ)言之基本語(yǔ)法',author:'余躍',tags:['Java基礎(chǔ)','語(yǔ)法'],learning_num:814},
{_id:3,course:'Python面向?qū)ο缶幊虒?shí)訓(xùn)',author:'李暾',tags:['Python基礎(chǔ)','面向?qū)ο?],learning_num:143},
{_id:4,course:'Android綜合實(shí)訓(xùn)之物聯(lián)網(wǎng)移動(dòng)應(yīng)用開(kāi)發(fā)(1)',author:'prophet5',tags:['Android','物聯(lián)網(wǎng)','移動(dòng)開(kāi)發(fā)'],learning_num:207}])
BulkWriteResult({
        "writeErrors" : [ ],
        "writeConcernErrors" : [ ],
        "nInserted" : 4,
        "nUpserted" : 0,
        "nMatched" : 0,
        "nModified" : 0,
        "nRemoved" : 0,
        "upserted" : [ ]
})

db.educoder.aggregate([{\$group:{_id:'\$author',first_course:{\$first:'\$course'}}}]);
db.educoder.aggregate([{\$group:{_id:'\$author',learning_avg:{\$avg:'\$learning_num'}}}]);
db.educoder.aggregate([{\$unwind:'\$tags'},{\$group:{_id:'\$tags',course_num:{\$sum:1}}}]);








【實(shí)驗(yàn)6】  redis-cli啟動(dòng)服務(wù)器

1.Redis中的數(shù)據(jù)結(jié)構(gòu)

set hello redis

lpush educoder-list hello
rpush educoder-list educoder
rpush educoder-list bye
rpop educoder-list

sadd educoder-set c
sadd educoder-set python
sadd educoder-set redis
srem educoder-set c

hset educoder-hash python language
hset educoder-hash ruby language
hset educoder-hash redis database
hdel educoder-hash ruby

zadd educoder-zset 200 jack
zadd educoder-zset 400 rose
zadd educoder-zset 100 lee


2. 使用 Python 與 Redis 交互

import redis
pool= redis.ConnectionPool(host='localhost',port=6379,decode_responses=True)
r=redis.Redis(connection_pool=pool)

def write_redis():
    r.set("test1", "hello")
    r.set("test2", "Redis")


3. 字符串、列表與集合
import redis
conn = redis.Redis()

def task_empty():
    return int(conn.llen("task_list"))==0

def get_task():
    task = conn.rpop("task_list")
    conn.set("current_task",task)

def get_unallocated_staff():
    staff=conn.srandmember("unallocated_staff")
    conn.smove("unallocated_staff","allocated_staff",staff)
    return staff

def allocate_task(staff):
    conn.append("current_task",':'+str(staff))
    conn.lpush("task_queue",conn.get("current_task"))
    conn.set("current_task","None")


4. 哈希與有序集合
import redis
conn = redis.Redis()

def set_task_info(task_id):
    conn.hset("task_status",task_id,"init")

def add_task_to_queue(task_id, priority):
    conn.zadd("task_queue",task_id,int(priority))
    set_task_info(task_id)

def get_task():
    task_list_by_priority=conn.zrevrange('task_queue',0,-1)
    current_task=task_list_by_priority[0]
    conn.zrem('task_queue',current_task)
    conn.hset("task_status",current_task,"processing")
    return current_task

到了這里,關(guān)于頭歌 · NoSQL系列課程 · Neo4J / MongoDB 實(shí)驗(yàn)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Neo4j:入門(mén)基礎(chǔ)(二)~ 數(shù)據(jù)導(dǎo)入Neo4J
                    
            
RDF導(dǎo)入neo4j數(shù)據(jù)庫(kù)

    Neo4j:入門(mén)基礎(chǔ)(二)~ 數(shù)據(jù)導(dǎo)入Neo4J RDF導(dǎo)入neo4j數(shù)據(jù)庫(kù)

    neo4j導(dǎo)入數(shù)據(jù)的方式有以下幾種: Cypher create 語(yǔ)句,為每一條數(shù)據(jù)寫(xiě)一個(gè)create Cypher load csv 語(yǔ)句,將數(shù)據(jù)轉(zhuǎn)成CSV格式,通過(guò)LOAD CSV讀取數(shù)據(jù)。 neo4j-admin import導(dǎo)入 官方提供的Java API - BatchInserter 大牛編寫(xiě)的 batch-import 工具 neo4j-apoc load.csv + apoc.load.relationship 針對(duì)實(shí)際業(yè)務(wù)場(chǎng)景,定制

    2023年04月24日
    瀏覽(33)
  • 【neo4j】neo4j的安裝與使用

    【neo4j】neo4j的安裝與使用

    https://www.oracle.com/java/technologies/downloads/ 按照步驟安裝即可 配置環(huán)境變量 在系統(tǒng)變量中添加 path變量中添加 https://neo4j.com/deployment-center/ 下載后,在指定位置解壓縮 與java相同,也需要設(shè)置環(huán)境變量。 終端輸入neo4j.bat console 成功

    2024年02月03日
    瀏覽(31)
  • Neo4j:入門(mén)基礎(chǔ)(二)~ 數(shù)據(jù)導(dǎo)入Neo4J

    Neo4j:入門(mén)基礎(chǔ)(二)~ 數(shù)據(jù)導(dǎo)入Neo4J

    neo4j導(dǎo)入數(shù)據(jù)的方式有以下幾種: Cypher create 語(yǔ)句,為每一條數(shù)據(jù)寫(xiě)一個(gè)create Cypher load csv 語(yǔ)句,將數(shù)據(jù)轉(zhuǎn)成CSV格式,通過(guò)LOAD CSV讀取數(shù)據(jù)。 neo4j-admin import導(dǎo)入 官方提供的Java API - BatchInserter 大牛編寫(xiě)的 batch-import 工具 neo4j-apoc load.csv + apoc.load.relationship 針對(duì)實(shí)際業(yè)務(wù)場(chǎng)景,定制

    2024年02月09日
    瀏覽(27)
  • vue+neo4j(neo4j desktop安裝和使用)

    vue+neo4j(neo4j desktop安裝和使用)

    官網(wǎng)下載安裝 官方下載鏈接:https://neo4j.com/download/ 下載后會(huì)跳轉(zhuǎn)到 Activation Key 頁(yè)面,已經(jīng)自動(dòng)生成好密鑰,復(fù)制后,粘貼到 Neo4j Deskto 的 Software Keys 輸入框內(nèi)即可完成激活 官方安裝使用手冊(cè) https://neo4j.com/developer/neo4j-desktop/ 軟件主界面,默認(rèn)附帶一個(gè) Example Project ,自帶一個(gè)

    2024年02月14日
    瀏覽(63)
  • 【neo4j忘記密碼】neo4j忘記密碼的處理方法

    【neo4j忘記密碼】neo4j忘記密碼的處理方法

    小伙伴們大家好,我是javaPope,因?yàn)樽罱胍獦?gòu)建知識(shí)圖譜,突然想起自己還安裝過(guò)neo4j,當(dāng)我滿懷欣喜啟動(dòng)以后卻發(fā)現(xiàn),忘記密碼了,嗚嗚嗚,然后,廢話不多說(shuō),怎們直接上教程: 找到neo4j.config文件,路徑如下(以自己為準(zhǔn)): D:neo4jconfneo4j.conf 將 dbms.security.auth_enable

    2024年02月11日
    瀏覽(24)
  • Neo4j | 保姆級(jí)教學(xué)之如何清空neo4j數(shù)據(jù)庫(kù)

    要清空neo4j數(shù)據(jù)庫(kù),需要進(jìn)行以下操作: 停止Neo4j服務(wù)器,關(guān)閉Neo4j的所有連接。 找到 Neo4j 數(shù)據(jù)庫(kù)存儲(chǔ)的目錄,通常是 data/databases/ 。 刪除該目錄中的所有文件和子目錄。 請(qǐng)注意,這將不可逆地刪除數(shù)據(jù)庫(kù)的所有內(nèi)容,包括節(jié)點(diǎn)、關(guān)系和屬性等數(shù)據(jù)。在執(zhí)行這個(gè)操作之前,請(qǐng)

    2024年02月06日
    瀏覽(22)
  • neo4j網(wǎng)頁(yè)無(wú)法打開(kāi),啟動(dòng)一會(huì)兒后自動(dòng)關(guān)閉,查看neo4j status顯示Neo4j is not running.

    neo4j網(wǎng)頁(yè)無(wú)法打開(kāi),啟動(dòng)一會(huì)兒后自動(dòng)關(guān)閉,查看neo4j status顯示Neo4j is not running.

    公司停電,服務(wù)器未能幸免,發(fā)現(xiàn)無(wú)法訪問(wèn)此網(wǎng)站,http://0.0.0.0:7474 在此之前都還好著 發(fā)現(xiàn)neo4j啟動(dòng)后幾秒自動(dòng)掛掉 查看neo4j的報(bào)錯(cuò)日志 得到以下內(nèi)容(縮減版) 錯(cuò)誤信息 “User limit of inotify watches reached” 表明系統(tǒng)達(dá)到了 Linux 內(nèi)核對(duì) inotify 監(jiān)控事件的限制。inotify 是 Linux 內(nèi)

    2024年04月11日
    瀏覽(20)
  • neo4j community用neo4j.bat命令啟動(dòng)時(shí)遇到的困難

    1. neo4j : 無(wú)法將“neo4j”項(xiàng)識(shí)別為 cmdlet、函數(shù)、腳本文件或可運(yùn)行程序的名稱。請(qǐng)檢查名稱的拼寫(xiě),如果包括路徑,請(qǐng)確保路徑正確,然后再試一次 用powershell和cmd運(yùn)行都報(bào)錯(cuò),此時(shí)是neo4j環(huán)境變量未配置成功的問(wèn)題,需要多次刪除并新建NEO4J_HOME才有效; 2.無(wú)法加載文件 D:n

    2024年04月15日
    瀏覽(193)
  • NEO4J的基本使用以及桌面版NEO4J Desktop導(dǎo)入CSV文件

    NEO4J的基本使用以及桌面版NEO4J Desktop導(dǎo)入CSV文件

    因?yàn)槲乙矂偨佑|知識(shí)圖譜,就是小白,本篇博客相當(dāng)于一些入門(mén)級(jí)的Cypher語(yǔ)句的舉例,然后具體說(shuō)明一下NEO4J?Desktop導(dǎo)入CSV文件是怎么實(shí)現(xiàn)的,以及他的一些基本操作,適合剛接觸的小伙伴。如果大家對(duì)于NEO4J的配置有疑問(wèn)的話可以參考文章NEO4J桌面版的配置和連接Pycharm_neo4

    2024年01月23日
    瀏覽(25)
  • neo4j

    neo4j

    -- 創(chuàng)建節(jié)點(diǎn)語(yǔ)句 CREATE ( node-name:label-name { Property1-name:Property1-Value ........ Propertyn-name:Propertyn-Value } ); 其中的node-name 是節(jié)點(diǎn)名稱 label-name 是標(biāo)簽名稱 propert1-name是屬性名稱和property-value是屬性值 例如 單節(jié)點(diǎn)單標(biāo)簽 create (p:Person{name:\\\"alicy\\\"}); create (p:Person{name:\\\"Tom\\\", sex:\\\"男\(zhòng)\\"}); ? 單節(jié)點(diǎn)

    2024年02月05日
    瀏覽(11)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包