MongoDB高级操作
实验目的:
-
会用MapReduce聚合运算统计数据
-
掌握文件系统和自动增长的设置方式
-
掌握MongoDB的安全和访问控制方法
use wds
db.createCollection("dizhen")
mongoimport -d wds -c dizhen E:data地震数据.txt
use wds db.dizhen.find()
3.定义map函数,把经度jd和纬度wd按5度划分区域
4.定义reduce函数,按划分区域统计数量
5.使用MapReduce函数,将统计的结果存放到一个新的集合dz中
var map=function(){
var wd =parseInt(this.wd/5)*5;
var jd =parseInt(this.jd/5)*5;
var area =wd+":"+jd;
emit(area,1);
}
var reduce=function(area,num){
return Array.sum(num);
}
db.dizhen.mapReduce(map,reduce,{out:"dz"});
db.dz.find()
题目2:使用大文件存储规范GridFS存储文档
- 在D:mongodbdata目录下创建一个文本文档qwer.txt
2.进入MongoDB安装目录bin下,找到mongofiles.exe,添加qwer文件
mongofiles -d gribfs put D:mongoDBdataqwer.txt db.fs.files.find() db.fs.chunks.find()
1.创建一个名字为”counters”的集合
2.插入文档{_id:“productid”,sequence_value:0}
3.创建函数getNextSequencevalue来作为序列名的输入,指定的序列会自动增长 1 ,并返回最新序列值
4.使用getNextSequencevalue函数创建一个新的文档,并设置文档_id自动为函数返回的序列值
5.执行命令“db.products.find()命令,验证自增长函数是否有效
db.createCollection("counters")
db.counters.insertOne(
{_id:"productid",sequence_value:0}
)
function getNextSequencevalue(productid){
var sequencedocument = db.counters.findAndModify(
{
query:{_id: productid },
update: {$inc:{sequence_value:1}},
new:true
});
return sequencedocument.sequence_value;
}
db.products.insert({
"_id":getNextSequencevalue("productid"),
"product_name":"AppleiPhone",
"category":"mobiles"})
db.products.insert({
"_id":getNextSequencevalue("productid"),
"product_name":"SamsungS3",
"category":"mobiles"})
db.products.find()
题目4:使用用户认证的方式登录MongoDB
1.进入admin数据库
2.添加一个具有管理员权限的用户admin,添加一个普通用户tester
roles:[ { role: "userAdminAnyDatabase", db: "admin" } ]
3.用show users()命令或者db.system.users.find()命令查看用户
4.使用db.auth()命令完成用户认证
5.修改admin/tester用户的密码
6.删除admin/tester用户
use admin
db.createUser(
{
user: "wds",
pwd: "cww",
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
}
)
db.createUser(
{
user:"mongoTester",
pwd:"orgle123",
roles:[{role:"readWrite",db:"test"},
{role:"read",db:"goodMongodb"}]
}
)
show users 或者
db.system.users.find()
db.auth("wds","cww")
db.changeUserPassword("wds","admin123")
db.dropUser("admin")



