林子雨编著《大数据基础编程、实验和案例教程》(教材官网)教材中的代码,在纸质教材中的印刷效果不是很好,可能会影响读者对代码的理解,为了方便读者正确理解代码或者直接拷贝代码用于上机实验,这里提供全书配套的所有代码。
查看教材所有章节的代码
第6章 典型NoSQL数据库的安装和使用
教材第126页
(温馨提示:代码框上方的复制代码按钮,也就是“两张A4纸图标”,用鼠标点击复制代码按钮,就可以把代码框中的代码复制到粘贴板,粘贴到其他地方。但是,有的浏览器可能不支持该功能)
cd ~
sudo tar -zxvf ./下载/redis-3.2.7.tar.gz -C /usr/local
cd /usr/local
sudo mv ./redis-3.2.7 ./redis
sudo chown -R hadoop:hadoop ./redis
sudo make
sudo make install
cd /usr/local/redis
./src/redis-server
cd /usr/local/redis
./src/redis-cli
教材第129页
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv EA312927
echo "deb http://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/3.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.2.list
sudo apt-get update
sudo apt-get install -y mongodb-org
mongo -version
教材第130页
sudo service mongodb start
pgrep mongo -l #注意:-l是英文字母l,不是阿拉伯数字1
sudo service mongodb stop
sudo service mongodb start
mongo
教材第131页
>use School
教材第132页
> db.createCollection('teacher')
> db.student.insert({_id:1, sname: 'zhangsan', sage: 20}) #_id可选
> db.student.save({_id:1, sname: 'zhangsan', sage: 22}) #_id可选
教材第133页
> db.youCollection.find(criteria, filterDisplay)
> db.student.find()
> db.student.find({sname: 'lisi'})
教材第134页
> db.student.find({},{sname:1, sage:1})
> db.student.find({sname: 'zhangsan', sage: 22})
> db.student.find({$or: [{sage: 22}, {sage: 25}]})
> db.youCollection.update(criteria, objNew, upsert, multi )
教材第135页
> db.student.update({sname: 'lisi'}, {$set: {sage: 30}}, false, true)
> db.student.remove({sname: 'chenliu'})
> db.student.drop()
> exit
教材第136页
http://central.maven.org/maven2/org/mongodb/mongo-java-driver/3.2.2/mongo-java-driver-3.2.2.jar
import java.util.ArrayList;
import java.util.List;
import org.bson.Document;
import com.mongodb.MongoClient;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoCursor;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.model.Filters;
public class TestMongoDB {
/**
* @param args
*/
public static void main(String[] args) {
// insert();//插入数据。执行插入时,可将其他三句函数调用语句注释,下同
find(); //查找数据
// update();//更新数据
// delete();//删除数据
}
/**
* 返回指定数据库中的指定集合
* @param dbname 数据库名
* @param collectionname 集合名
* @return
*/
//MongoDB无需预定义数据库和集合,在使用的时候会自动创建
public static MongoCollection<Document> getCollection(String dbname,String collectionname){
//实例化一个mongo客户端,服务器地址:localhost(本地),端口号:27017
MongoClient mongoClient=new MongoClient("localhost",27017);
//实例化一个mongo数据库
MongoDatabase mongoDatabase = mongoClient.getDatabase(dbname);
//获取数据库中某个集合
MongoCollection<Document> collection = mongoDatabase.getCollection(collectionname);
return collection;
}
/**
* 插入数据
*/
public static void insert(){
try{
//连接MongoDB,指定连接数据库名,指定连接表名。
MongoCollection<Document> collection= getCollection("School","student"); //数据库名:School 集合名:student
//实例化一个文档,文档内容为{sname:'Mary',sage:25},如果还有其他字段,可以继续追加append
Document doc1=new Document("sname","Mary").append("sage", 25);
//实例化一个文档,文档内容为{sname:'Bob',sage:20}
Document doc2=new Document("sname","Bob").append("sage", 20);
List<Document> documents = new ArrayList<Document>();
//将doc1、doc2加入到documents列表中
documents.add(doc1);
documents.add(doc2);
//将documents插入集合
collection.insertMany(documents);
System.out.println("插入成功");
}catch(Exception e){
System.err.println( e.getClass().getName() + ": " + e.getMessage() );
}
}
/**
* 查询数据
*/
public static void find(){
try{
MongoCollection<Document> collection = getCollection("School","student"); //数据库名:School 集合名:student
//通过游标遍历检索出的文档集合
// MongoCursor<Document> cursor= collection.find(new Document("sname","Mary")). projection(new Document("sname",1).append("sage",1).append("_id", 0)).iterator(); //find查询条件:sname='Mary'。projection筛选:显示sname和sage,不显示_id(_id默认会显示)
//查询所有数据
MongoCursor<Document> cursor= collection.find().iterator();
while(cursor.hasNext()){
System.out.println(cursor.next().toJson());
}
}catch(Exception e){
System.err.println( e.getClass().getName() + ": " + e.getMessage() );
}
}
/**
* 更新数据
*/
public static void update(){
try{
MongoCollection<Document> collection = getCollection("School","student"); //数据库名:School 集合名:student
//更新文档,将文档中sname='Mary'的文档修改为sage=22
collection.updateMany(Filters.eq("sname", "Mary"), new Document("$set",new Document("sage",22)));
System.out.println("更新成功!");
}catch(Exception e){
System.err.println( e.getClass().getName() + ": " + e.getMessage() );
}
}
/**
* 删除数据
*/
public static void delete(){
try{
MongoCollection<Document> collection = getCollection("School","student"); //数据库名:School 集合名:student
//删除符合条件的第一个文档
collection.deleteOne(Filters.eq("sname", "Bob"));
//删除所有符合条件的文档
//collection.deleteMany (Filters.eq("sname", "Bob"));
System.out.println("删除成功!");
}catch(Exception e){
System.err.println( e.getClass().getName() + ": " + e.getMessage() );
}
}
}