第1关:数据的导入导出
编程要求
在右侧命令行进行操作:
將 /home/example 路径下的文件 student.csv 导入到数据库 mydb1 的 test 集合中;
将数据库 mydb1 的 test 集合以 json 格式导出到 /home/test1.json 的 json 文件中;
将数据库 mydb1 的 test 集合以 csv 格式导出到 /home/test1.csv 的 CSV 文件中。
解答
mongoimport -d mydb1 -c test --type csv --headerline --ignoreBlanks --file /home/example/student.csv
mongoexport -d mydb1 -c test -o /home/test1.json --type json
mongoexport -d mydb1 -c test -o /home/test1.csv --type csv -f "_id,name,age,sex,major"
第2关:高级查询(一)
编程要求
现有 person.json 文件内容如下:
_id name age sex hobbies
1 杨璐 19 女 唱歌,跳舞
2 李建学 20 男 唱歌,篮球
…… …… …… …… ……
在命令行进行操作:
将 /home/example/person.json 文件导入到数据库 mydb2 中的 test 集合中。
在右侧代码行 Begin-End 中编辑:
执行查询命令,查找所有喜欢唱歌和跳舞的人的信息,并按照_id升序排序;
执行查询命令,查找所有喜欢羽毛球和跳舞的人的信息,并按照_id升序排序;
执行查询命令,查找有3个爱好的人的信息,并按照_id升序排序;
执行查询命令,查找文档中存在 hobbies 字段的人的信息,并按照_id升序排序;
执行查询命令,查找19岁和23岁的人的信息,并按照_id升序排序;
执行查询命令,查找不是20岁的人的信息,并按照_id升序排序;
执行查询命令,查找 age 取模9等于2的人的信息,并按照_id升序排序。
注意:上述操作共有七条命令,每条命令以;号隔开(由于测试需要,请在$前加\(转义符),即使用$,平时在命令窗口练习不需要加\;不要使用双引号改用 单引号)。
解答
## 命令行部分
mongoimport -d mydb2 -c test --type json --file /home/example/person.json
## 代码行部分
#********* Begin *********#
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});
"
#********* End *********#
第3关:高级查询(二)
编程要求
现有 person.json 文件内容如下:
_id name age sex hobbies
1 杨璐 19 女 唱歌,跳舞
2 李建学 20 男 唱歌,篮球
…… …… …… …… ……
在右侧命令行进行操作:
将 /home/example/person.json 文件导入到数据库 mydb3 中的 test 集合中。
在右侧代码行 Begin-End 中编辑,如下:
执行查询命令,查找年龄为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
## 代码行部分
#********* Begin *********#
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();
"
#********* End *********#
第4关:游标
编程要求
在命令行进行以下操作:
在数据库 mydb4 中,向集合 test 循环插入 10000 条数据,格式如下:
_id title content
1 MongoDB1 hello1
2 MongoDB2 hello2
3 MongoDB3 hello3
…… …… ……
将集合 test 以 csv 格式导出到 /home/test/test4.csv 文件中。
打印游标中的数据信息请自行练习尝试,测评不做要求。
解答
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 -o /home/test/test4.csv --type csv -f "_id, title, content"