科研部建设中,覆盖歌云端实验平台对于Neoj4、MongoDB 的实验项目

目录

目录

​编辑

Neo4j  实验一、二

MonGoDB实验三、四

实验五六、redis


Neo4j  实验一、二

//NoSQL专项1. 第1关:创建第一个Neo4j数据库节点CREATE (TomC:Person {name:'Tom Cruise', born:1962})2. 第2关:一次创建多个演员节点UNWIND [{name:'Tom Hanks',born:1956}, {name:'Keanu Reeves',born:1964},{name:'Tom Cruise',born:1962}] AS rowCREATE (p:Person) SET p.name=row.name, p.born=row.born 3. 第3关:一次创建多个电影节点
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关:查找所有标签为Person的节点MATCH (n:Person) RETURN n5. 第5关:查找名字为Tom Cruise的节点MATCH (n) WHERE n.name = 'Tom Cruise' RETURN n6. 第6关:查找数据库中发行年在1990与2000之间的电影MATCH (n:Movie) WHERE n.released > 1900 and n.released <2000RETURN n
查找数据库中发行年在1990与2000之间的电影。7. 第7关:修改节点的属性MATCH(n)WHEREID(n)= 116  SET n.age = 40RETURN n
在数据库中查找   ID为116    的节点,修改或新建age属性,并赋值为40。MATCH(n)WHERE name(n)= 'Tom Cruise' SET n.gender = 'male'SET n.roles = 'Forrest Gump'
修改   名字为Tom Cruise的节点    的gender属性为male,roles属性为Forrest Gump。MATCH(n)WHERE n.name= 'Tom Cruise' SET n.gender = 'male'SET n.roles = 'Forrest Gump' 8. 第8关:为节点增加标签MATCH (n) WHERE ID(n)= 116  SET n : Actor RETURN n
在数据库中查找ID为116的节点,为节点n增加Actor标签。MATCH (n) WHERE n.name = 'Tom Cruise'SET n : Actor
为Tom Cruise节点增加标签Actor。9. 第9关:删除节点属性MATCH (yyds{name:’Tiger’}) REMOVE yyds.age return yyds
在数据库中查找name为Tiger的节点,删除其age属性。MATCH (t) where t.name = 'Tom Cruise'REMOVE t.gender
删除Tom Cruise节点的gender属性。10. 第10关:删除节点标签MATCH (n)WHERE ID(n)= 116  REMOVE n : ActorRETURN n
在数据库中查找ID为116的节点,删除节点n的Actor标签。MATCH (n)WHERE n.name = 'Tom Cruise' REMOVE n : Actor
删除Tom Cruise节点的Actor标签。1. 第1关:增加节点与联系CREATE  (<node1>:<label1>)-[<relationship1>:<relationship-label>]->(<node2>:<label2>)RETURN <relationship>
功能:创建一个新节点node1,node2,并在两个节点间建立联系relationship1。CREATE(fb1:Student{name:"Tom"})-[like:LIKES]->(fb2:Student{name:"Jerry"})
在数据库中创建名称为Tom标签是Student的节点、名称为Jerry标签是Student的节点,并在Tom和Jerry两个节点之间建立了联系,该联系的标签为LIKES。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)增加标签为Person的节点,其name值为Tom Hanks,born值为1956。
2)增加标签为Movie的节点,其title为'The Da Vinci Code', released值为2006, tagline为'Break The Codes'。
3)在这两个节点之间建立标签为ACTED_IN的联系。2. 第2关:为已有节点增加联系MATCH  (<node1>:<label1>), (<node2>:<label2>)WHERE <condition>CREATE (node1)-[<relationship1>:<relationship-label>]->(node2)
功能:匹配节点node1,node2,并在两个节点间建立联系relationship1。MATCH(fb1:Student{name:"Tom"}),(fb2:Student{name:"Jerry"})CREATE (fb1)-[like:LIKES]->(fb2)
在数据库中查找名称为Tom标签是Student的节点、名称为Jerry标签是Student的节点,并在Tom和Jerry两个节点之间建立了联系,该联系的标签为LIKES。MATCH(fb1:Person{name:"Tom Hanks"}),(fb2:Movie{title:'The Da Vinci Code'})CREATE (fb1)-[like:ACTED_IN]->(fb2)
1)查找标签为Person的节点,其name值为Tom Hanks。
2)查找标签为Movie的节点,其title为'The Da Vinci Code'。
3)在这两个节点之间建立标签为ACTED_IN的联系。3. 第3关:查找节点间联系MATCH  (<node1>:<label1>)-[<relationship1>:<relationship-label>]->(<node2>:<label2>)WHERE <condition>RETURN node1,node2,relationship1
功能:先匹配节点node1,node2及联系relationship1,然后返回node1,node2,relationship1。
示例如下:MATCH(fb1:Student{name:"Tom"})-[like:LIKES]->(fb2:Student{name:"Jerry"})RETURN fb1,fb2,like;
在数据库中查找名称为Tom标签是Student的节点、名称为Jerry标签是Student的节点
以及Tom和Jerry两个节点之间的联系like,然后返回节点及联系MATCH(fb1:Person{})-[r:ACTED_IN]->(fb2:Movie{})where fb1.name = "Tom Hanks"RETURN r;
1)匹配标签为Person的节点,其name值为Tom Hanks。
2)匹配标签为Movie的节点。
3)返回符合条件节点之间标签为ACTED_IN的联系。4. 第4关:删除节点间联系MATCH (fb1:Student{name:"Tom"})- [r:LIKES]-> (fb2:Student{name:"Jerry"}) DELETE r;
在数据库中查找名称为Tom标签是Student的节点、名称为Jerry标签是Student的节点,以及Tom和Jerry两个节点之间的联系like,然后删除该联系。MATCH (fb1:Person{name:"Tom Hanks"})- [r:ACTED_IN]-> (fb2:Movie{title:'The Da Vinci Code'}) DELETE r;
请使用MATCH-CREATE语句,
1)查找标签为Person的节点,其name值为Tom Hanks。
2)查找标签为Movie的节点,其title为'The Da Vinci Code'。
3)删除这两个节点之间标签为ACTED_IN的联系。5. 第5关:为联系增加属性MATCH  (<node1>:<label1>), (<node2>:<label2>)WHERE <condition>CREATE (node1)-[<relationship1>:<relationship-label>{property1:value1},...{propertyn:valuen}]->(node2)
功能:匹配节点node1,node2,并在两个节点间建立联系relationship1。MATCH(fb1:Student{name:"Tom"}),(fb2:Student{name:"Jerry"})CREATE (fb1)-[like:LIKES{startdate:'2000-1-1'}]->(fb2)
在数据库中查找名称为Tom标签是Student的节点、名称为Jerry标签是Student的节点
并在Tom和Jerry两个节点之间建立了联系,该联系的标签为LIKES,开始时间是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)
请使用MATCH-CREATE语句,
1)查找标签为Person的节点,其name值为Tom Hanks。
2)查找标签为Movie的节点,其title为'The Da Vinci Code'。
3)在这两个节点之间建立标签为ACTED_IN的联系,联系属性是roles:['Dr. Robert Langdon']。6. 第6关:修改联系属性MATCH  (<node1>:<label1>)-[<r>:<relationship-label>]->(<node2>:<label2>)WHERE <condition>SET r.property1 = value1,...r.propertyn = valuen;
功能:匹配节点node1,node2及联系r,并未联系r设置一组属性及值MATCH(fb1:Student{name:"Tom"})-[r1:LIKES]->(fb2:Student{name:"Jerry"})SETr1.startdate = '2000-1-1'
在数据库中查找名称为Tom标签是Student的节点、名称为Jerry标签是Student的节点及联系like
该联系的标签为LIKES,设置like联系的属性开始时间是2000-1-1。MATCH(fb1:Person{name:"Tom Hanks"})-[r1:ACTED_IN]->(fb2:Movie{title:'The Da Vinci Code'})SETr1.roles = ['Dr. Robert Langdon']
1)查找标签为Person的节点,其name值为Tom Hanks。
2)查找标签为Movie的节点,其title为'The Da Vinci Code'。
3)查找两个节点之间标签为ACTED_IN的联系。
4)设置联系属性roles的值为['Dr. Robert Langdon']。7. 第7关:删除联系属性
示例如下:MATCH(fb1:Student{name:"Tom"})-[like:LIKES]->(fb2:Student{name:"Jerry"})REMOVElike.startdate
在数据库中查找名称为Tom标签是Student的节点、
名称为Jerry标签是Student的节点及联系like,
该联系的标签为LIKES,删除like联系的属性开始时间。
题目要求MATCH(fb1:Person{name:"Tom Hanks"})-[r1:ACTED_IN]->(fb2:Movie{title:'The Da Vinci Code'})REMOVEr1.roles
请使用MATCH-CREATE语句,
1)查找标签为Person的节点,其name值为Tom Hanks。
2)查找标签为Movie的节点,其title为'The Da Vinci Code'。
3)查找两个节点之间标签为ACTED_IN的联系。
4)删除联系属性roles。8. 第8关:查找节点的邻接节点
查找联系的一般语法如下:MATCH  (<node1>:<label1>)-[<relationship1>:<relationship-label>]->(<node2>:<label2>)WHERE <condition>RETURN node1,node2
功能:先匹配节点node1,node2及联系relationship1,然后返回node1,node2。
node2即是node1的邻接节点。
示例如下:MATCH(fb1:Person{name:"Tom Hanks"})-[s:Study]->(fb2:Database)RETURN fb2;
在数据库中查找名称为Tom、标签是Student的节点,再查找Tom所学的数据库课程MATCH(n:Person{name:"Tom Hanks"})-[r1:ACTED_IN]->(m:Movie)RETURN m.title,r1.rolesorder by m.titlelimit 10
查询Tom Hanks参演过电影
返回电影title、及其角色roles
并按照title排序
最终结果返回前10个9. 查找节点的共同邻接节点MATCH(fb1:Student{name:"Tom"})-[s:Study]->(r1:Database{name:"Neo4j"})<-[s:Study]-(fb2:Student)RETURN fb1,r1,fb2;
在数据库中查找名称为Tom、标签是Student的节点
再查找与Tom一起学习neo4j的学生。MATCH(fb1:Person{name:"Tom Hanks"})-[s1:ACTED_IN]->(m:Movie{})<-[r2:ACTED_IN]-(fb2:Person)RETURN m.title , fb2.name , r2.rolesorder by m.title , fb2.namelimit 10
查询和Tom Hanks共同参演过电影的演员
返回电影title、共同参演的演员name及其角色roles
并按照title,name排序,最终结果返回前10个10. 最短路径MATCHp=shortestPath((fb1:Student{name:"Tom"})-[*1..4]-(fb2:Student{name:"Jerry"}))RETURN p;
在数据库中查找Tom和Jerry之间的最短路径。MATCHP=shortestPath((fb1:Person{name:"Tom Hanks"})-[*1..4]-(fb2:Person{name:"Tom Cruise"}))RETURN P;
1)查询Tom Hanks和Tom Cruise之间5步之内的最短路径。

MonGoDB实验三、四

第1关:数据库创建创建或切换  use Testdb删除        db.dropDatabase()插入        db.Testdb.insert({_id:1,name:"王小明"})
在命令行操作
mongo
use mydb
db.mydb.insert({_id:1,name:"李小红"})第2关:创建集合
先进入指定数据库,在 Testdb 数据库中创建创建固定集合 test ,整个集合空间大小512000KB,文档最大个数为1000个use Testdbdb.createCollection("test", { capped : true, autoIndexId : true, size : 512000, max : 1000 } )
创建集合命令(推荐):db.集合名.insert()
(注意:一条数据用大括号“ {} ”括起来,多条数据用“ [] ”将所有数据括起来)db.mytest2.insert([{"name" : "王小明","sex":"男"},{"name" : "李小红","sex":"女"}])
MongoDB 中存储的文档 必须 有一个_id键
查询集合命令:db.集合名.find()
删除集合命令:db.集合名.drop()
创建数据库 Testdb2,创建集合 t_stu ,内容如图3所示mongouse Testdb2db.createCollection("t_stu", { capped : true, autoIndexId : true, size : 512000, max : 1000 } )    db.testdb2.insert([{"_id" :1,"name" : "小明","sex":"男","hobbies":["乒乓球","羽毛球"]},{"_id" :2,"name" : "小红","sex":"女","hobbies":["画画","唱歌"]}])第3关:文档操作一
插入文档命令:db.集合名.insert(文档)
数据定义为一个变量,之后再插入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" : ["画画","唱歌","跳舞"],"birthday" : "1996-06-14"})
如果 save() 法也指定了_id,则对文档进行更新;
未指定_id则会执行插入功能,MongoDB 默认自动生成一个不重复的_idupdate() 方法仅适用于修改某条数据中的某个键值;save() 方法适用于修改整条数据。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关:文档操作二
db.集合名称.find().pretty()
操作  格式                          范例                                      关系数据库中类似的语句
等于  {<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 != 18and      db.stu1.find({"age":20, "sex":"男"}).pretty()
删除指定的数据                          db.stu1.remove({'age':20})
删除全部数据但是保留集合                 db.remove({})定义多个数据document=([{name:'张小华',sex:'男',age:20,phone:'12356986594',hobbies:['打篮球','踢足球','唱歌']},{name:'李小红',sex:'女',age:18,phone:'12355487536',hobbies:['跳舞','唱歌']}])
插入集合    db.stu1.insert(document)测试开始  放入echo内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({});"
上述操作共有六条命令,请按要求填入右侧代码栏 Begin-End 中
每条命令以英文分号“ ;”号隔开
(由于测试需要,请在“ $ ” 前加 “ \ ” (转义符))。第1关:数据的导入导出导入数据mongoimport -d Testdb1 -c score --type csv --headerline --ignoreBlanks --file test.csv
-d Testdb1 :指定将数据导入到 Testdb1 数据库;
-c score :将数据导入到集合 score ,如果这个集合之前不存在,会自动创建一个(如果省略 --collection 这个参数,那么会自动新建一个以  CSV 文件名为名的集合);
--type csv :文件类型,这里是 CSV;
--headerline :这个参数很重要,加上这个参数后创建完成后的内容会以 CSV 文件第一行的内容为字段名(导入json文件不需要这个参数)
--ignoreBlanks :这个参数可以忽略掉 CSV 文件中的空缺值(导入json文件不需要这个参数);
--file 1.csv :这里就是 CSV 文件的路径了,需要使用绝对路径导出数据mongoimport -d Testdb1 -c score --type csv --headerline --ignoreBlanks --file test.csv-d Testdb1 :指定将数据导入到 Testdb1 数据库;-c score :将数据导入到集合 score ,如果这个集合之前不存在,会自动创建一个
(如果省略 --collection 这个参数,那么会自动新建一个以  CSV 文件名为名的集合);--type csv :文件类型,这里是 CSV;--headerline :这个参数很重要,加上这个参数后创建完成后的内容会以 CSV 文件第一行的内容为字段名
(导入json文件不需要这个参数)--ignoreBlanks :这个参数可以忽略掉 CSV 文件中的空缺值(导入json文件不需要这个参数);--file 1.csv :这里就是 CSV 文件的路径了,需要使用绝对路径。导出 json 格式文件:mongoexport -d Testdb1 -c score -o /file.json --type json-o /file.json :输出的文件路径/(根目录下)和文件名;--type json :输出的格式,默认为 json。导出 csv 格式的文件:mongoexport -d Testdb1 -c score -o /file.json --type csv -f "_id,name,age,sex,major"-f :当输出格式为 csv 时,需要指定输出的字段名。將 /home/example 路径下的文件 student.csv 导入到数据库 mydb1 的 test 集合中;
mongoimport -d mydb1 -c test --type csv --headerline --ignoreBlanks --file /home/example/student.csv将数据库 mydb1 的 test 集合以 json 格式导出到 /home/test1.json 的 json 文件中;
mongoexport -d mydb1 -c test -o /home/test1.json --type json将数据库 mydb1 的 test 集合以 csv 格式导出到 /home/test1.csv 的 CSV 文件中。
mongoexport -d mydb1 -c test -o /home/test1.csv --type csv -f "_id,name,age,sex,major"第2关:高级查询(一)
匹配所有    db.hobbies.find({hobbies:{$all:["唱歌","羽毛球"]}})
判断存在    $exists
mod运算     db.hobbies.find({age:{$mod:[7,4]}})
包含        db.hobbies.find({age:{$in:[17,20]}})
不包含      db.hobbies.find({age:{$nin:[17,20]}})
长度查询    db.hobbies.find({hobbies:{$size:2}})
结果排序    db.collection.find().sort({_id:1})     #将查询结果按照_id升序排序db.collection.find().sort({_id:-1})    #将查询结果按照_id降序排序将 /home/example/person.json 文件导入到数据库 mydb2 中的 test 集合中
mongoimport -d mydb2 -c test --type json --file /home/example/person.json  执行查询命令,查找  所有喜欢唱歌和跳舞的人的信息,      并按照_id升序排序
执行查询命令,查找  所有喜欢羽毛球和跳舞的人的信息,    并按照_id升序排序
执行查询命令,查找  有3个爱好的人的信息,               并按照_id升序排序
执行查询命令,查找  文档中存在 hobbies 字段的人的信息, 并按照_id升序排序
执行查询命令,查找  19岁和23岁的人的信息,              并按照_id升序排序
执行查询命令,查找  不是20岁的人的信息,                并按照_id升序排序
执行查询命令,查找  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关:高级查询(二)
或查询    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:/^计.*/}})
数数      db.student.find({major:{$not:/^计.*/}}).count()将 /home/example/person.json 文件导入到数据库 mydb3 中的 test 集合中。执行查询命令,查找  年龄为20岁男生的信息            ,并按照_id升序排序执行查询命令,查找  年龄为20岁或者性别为男生的信息   ,并按照_id升序排序执行查询命令,查找  name = 韩*开头的人的信息        ,并按照_id升序排序执行查询命令,查找  年龄19 =< age < 22的人的信息    ,并按照_id升序排序执行查询命令,查找  年龄age < 19或age >21的信息     ,并按照_id升序排序执行查询命令,查找  name != 韩*开头的人的信息       ,并按照_id升序排序执行查询命令,查找  name != 韩*开头的人             的个数执行查询命令,查找  年龄19 =< age < 22的人          的个数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关:游标使用循环插入数据for(var i=0;i<10000;i++)db.items.insert({_id:i,text:"Hello MongoDB"+i})
申明游标,ind 的查询结果(_id<=5)赋值给了游标 cursor 变量var cursor=db.items.find({_id:{$lte:5}})mongo
use mydb4for(var i=0;i<10000;i++)db.test.insert({_id:i,title:"MongoDB"+i,content:"hello"+i});
exitmongoexport -d mydb4 -c test -f _id.title,content -o /home/test/test4.csv --type csv

实验五六、redis

【实验5】1.聚合管道操作符将文档定制格式输出(一)
mongo
use test1db.educoder.insert({_id:1,course:'Python表达式问题求解实训',author:'李暾',tags:['Python基础','求解'],learning_num:1882})
db.educoder.insert({_id:2,course:'Java语言之基本语法',author:'余跃',tags:['Java基础','语法'],learning_num:814})
db.educoder.insert({_id:3,course:'Python面向对象编程实训',author:'李暾',tags:['Python基础','面向对象'],learning_num:143})
db.educoder.insert({_id:4,course:'Android综合实训之物联网移动应用开发(1)',author:'prophet5',tags:['Android','物联网','移动开发'],learning_num:207})db.educoder.aggregate({\$project:{_id:0,course:1,learning_num:1}});
db.educoder.aggregate({\$match:{learning_num:1882}});2.聚合管道操作符将文档定制格式输出(二)?
use test2db.educoder.insert({_id:1,course:'Python表达式问题求解实训',author:'李暾',tags:['Python基础','求解'],learning_num:1882})
db.educoder.insert({_id:2,course:'Java语言之基本语法',author:'余跃',tags:['Java基础','语法'],learning_num:814})
db.educoder.insert({_id:3,course:'Python面向对象编程实训',author:'李暾',tags:['Python基础','面向对象'],learning_num:143})
db.educoder.insert({_id:4,course:'Android综合实训之物联网移动应用开发(1)',author:'prophet5',tags:['Android','物联网','移动开发'],learning_num:207}) db.educoder.aggregate({\$limit:3});
db.educoder.aggregate({\$sort:{learning_num:1}});
db.educoder.aggregate({\$skip:2});3.第3关:聚合表达式对文档数据进行统计
use test3db.educoder.insert([
{_id:1,course:'Python表达式问题求解实训',author:'李暾',tags:['Python基础','求解'],learning_num:1882},
{_id:2,course:'Java语言之基本语法',author:'余跃',tags:['Java基础','语法'],learning_num:814},
{_id:3,course:'Python面向对象编程实训',author:'李暾',tags:['Python基础','面向对象'],learning_num:143},
{_id:4,course:'Android综合实训之物联网移动应用开发(1)',author:'prophet5',tags:['Android','物联网','移动开发'],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}}}]);【实验6】  redis-cli启动服务器1.Redis中的数据结构set hello redislpush educoder-list hello
rpush educoder-list educoder
rpush educoder-list bye
rpop educoder-listsadd educoder-set c
sadd educoder-set python
sadd educoder-set redis
srem educoder-set chset educoder-hash python language
hset educoder-hash ruby language
hset educoder-hash redis database
hdel educoder-hash rubyzadd educoder-zset 200 jack
zadd educoder-zset 400 rose
zadd educoder-zset 100 lee2. 使用 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"))==0def 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 staffdef 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

头歌 · NoSQL系列课程 · Neo4J / MongoDB 实验相关推荐

  1. 头歌Educoder云计算与大数据——实验二 Hadoop单机部署

    头歌Educoder云计算与大数据--实验二 Hadoop单机部署 答案在下面的链接里 https://blog.csdn.net/qq_20185737/article/details/114677 ...

  2. (16)UiBot:智能化软件机器人(以头歌抓取课程数据为例)

    文章目录 一. 实验平台--UiBot 二. 项目功能与实现 1.项目介绍 2. 项目流程 (1) 全局变量设置 (2) 页面登录和跳转 (3) Excel记录项目名称和个数 (4) 搜索并爬取第i个 ...

  3. 头歌实践教学平台——计算机数据表示实验(HUST)

    当你看到到这篇文章的时候,想必你已经被计算机组成原理实验折磨的不成样子了,没错我也是,经过我这几天的努力终于将这些实验一一完成. 我将源码放在压缩包里了,大家只需要复制代码,放进头歌里,满分过! 点击 ...

  4. 华中科技大学头歌 交通灯系统设计 Lojisim 详细实验报告,实验图,仅供参考

    本实验也是参考了许多大神的做法,也是小白一个!有完整实验代码,实验报告,~供大家参考 一.数码管驱动 由真值表生成电路 二.四位无符号比较器设计 三.8位无符号比较器设计 四.一位2路选择器设计 五. ...

  5. 头歌Educoder云计算与大数据——实验三 分布式文件系统HDFS

    实验三 分布式文件系统HDFS 第1关:HDFS的基本操作 任务描述 相关知识 HDFS的设计 分布式文件系统 NameNode与DataNode HDFS的常用命令 编程要求 测试说明 代码实现 第 ...

  6. 【头歌】常用图像绘制在线实验闯关

    第1关:散点图绘制 import matplotlib matplotlib.use("Agg") import matplotlib.pyplot as plt import n ...

  7. 计算机专业学电路分析,计算机专业电路系列课程教学改革调查分析

    摘要:文章分析了"桂林电子科技大学计算机相关专业对电路系列课程教学改革情况的调查问卷"结果,包括学生的课程重视程度和对课程内容改革.课程教学效果和学习资源.考核方式等的满意度.分析 ...

  8. Java头歌实验梳理

    Java头歌实验梳理 实验一:JAVA编程基础 编写一个简单Java程序,计算银行年存款的本息 编写程序完成矩阵的乘法运算 编写程序用*号输出等腰梯形 实验二:字符串 字符串的值转换成浮点型 字符转换 ...

  9. AlphaBeta剪枝算法求解博弈树最优选择 头歌实验平台

    AlphaBeta剪枝算法求解博弈树最优选择 头歌实验平台 前言 一.AlphaBeta剪枝是什么? 1.由来, 最大最小决策树 2.发展 3. AlphaBeta剪枝 二.实验算法伪代码 三.实验算 ...

最新文章

  1. POJ - 1734 Sightseeing trip(最小环+输出路径)
  2. leetcode28. 实现 strStr()
  3. 带你一起学习实用计算机英语!(IT行业、四六级党记起来)《软件工程专业英语》第二单元的重点词汇+名词缩写+重难句+软件需求规格说明
  4. 台式机电脑配置单_游戏直播电脑配置要求2019,附配置单及价格
  5. EF框架step by step(1)—Database-First
  6. C语言:有N个数从小到大的顺序存放在一个数组中,输入一个数,要求用折半查找法找出该数是数组中第几个数。如果不在数组中,打印“not found”。
  7. android studio 工程rebuild没反应,Andriod Studio Clear Project或Rebuild Project出错
  8. os系统配置putty服务器,Mac 电脑安装putty
  9. 顺丰该不该开除删库的运维工程师?
  10. 大学生活_网络营销实验
  11. 计算机房灭火器采用哪种类型,机房灭火器类型有哪些
  12. 计算机主板供电故障,电脑主板内部电池供电出现问题,会出现哪些故障问题
  13. macOS 网络已连接但无法使用的一种情况
  14. 基于多传感器数据融合的全自动泊车系统研究与应用(文献综述)
  15. Beam Search、GREEDY DECODER、SAMPLING DECODER等解码器工作原理可视化以及在自然语言生成领域的使用
  16. 【Kafka】kafka架构
  17. rancher k8s集群pod一直处于Pending状态
  18. 大厂程序员推荐的linux内核学习路线
  19. FPGA实现千兆/百兆自适应以太网UDP传输
  20. matlab在振动信号处理中的应用pdf,matlab在振动信号处理中的应

热门文章

  1. STM32高级开发(8)-链接器与启动文件
  2. MyBatis_多表查询的结果封装
  3. 公司电脑监控软件能看到哪些内容
  4. 华为OD机考:34-35-求众数中的中位数,求满足条件的两个集合
  5. 面试结束后应该做的5件事
  6. Ubuntu搭建Socks5代理服务器
  7. C++指针详解(指针初始化与回收,常量与指针,引用与指针)
  8. css zindex七阶,CSSz-index的层级关系优先级概念说明
  9. 2066 【例2.3】买图书
  10. 一个 SAP 成都研究院开发工程师的2021年度总结:既没有厚积,也未能薄发