大数据课堂
MongDB 在安装过程中出现的一个问题(Unit mongod.service not found)(Error: couldn't connect to server 127.0.0.1:27017, connection attempt failed )
在按照林子雨老师网站安装过程中
自己一不小心把 MongoDB 的步骤弄错了 然后从头安装一遍
sudo service mongod start
报错:
Unit mongod.service not found.
mongo
报错:
MongoDB shell version: 3.2.19
connecting to: test
2018-04-18T10:45:08.995+0800 W NETWORK [thread1] Failed to connect to 127.0.0.1:27017, in(checking socket for error after poll), reason: errno:111 Connection refused
2018-04-18T10:45:08.996+0800 E QUERY [thread1] Error: couldn't connect to server 127.0.0.1:27017, connection attempt failed :
connect@src/mongo/shell/mongo.js:229:14
@(conne5ct):1:6
错误的原因是安装上了 Mongo 的 shell 没有安装上 Mongo 的 Service 解决办法 :重安装
sudo apt-get install mongodb
sudo apt install mongodb-server
MongoDB 使用
sudo service mongodb start
pgrep mongo -l
978 mongod
mongo
MongoDB shell version: 2.6.10
connecting to: test
show dbs
School 0.078GB
admin (empty)
local 0.078GB
use School
switched to db School
show collections
system.indexes
> db.createCollection('teacher')
{ "ok" : 1 }
> db.createCollection('student')
{ "ok" : 1 }
> db.student.insert({_id:1, sname: 'zhangsan', sage: 20})
WriteResult({ "nInserted" : 1 })
> db.student.save({_id:1, sname: 'zhangsan', sage: 22})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.student.find() { "_id" : 1, "sname" : "zhangsan", "sage" : 22 } > s= [{sname:'lisi',sage:20},{sname:'wangwu',sage:20},{sname:'chenliu',sage:22}][
{
"sname" : "lisi",
"sage" : 20
},
{
"sname" : "wangwu",
"sage" : 20
},
{
"sname" : "chenliu",
"sage" : 22
}
]
> db.student.insert(s)
BulkWriteResult({
"writeErrors" : [ ],
"writeConcernErrors" : [ ],
"nInserted" : 3,
"nUpserted" : 0,
"nMatched" : 0,
"nModified" : 0,
"nRemoved" : 0,
"upserted" : [ ]
})
> db.student.find()
{ "_id" : 1, "sname" : "zhangsan", "sage" : 22 }
{ "_id" : ObjectId("5adeeaad949cd9c3aaf74597"), "sname" : "lisi", "sage" : 20 }
{ "_id" : ObjectId("5adeeaad949cd9c3aaf74598"), "sname" : "wangwu", "sage" : 20 }
{ "_id" : ObjectId("5adeeaad949cd9c3aaf74599"), "sname" : "chenliu", "sage" : 22 }
> db.student.find().pretty()
{ "_id" : 1, "sname" : "zhangsan", "sage" : 22 }
{
"_id" : ObjectId("5adeeaad949cd9c3aaf74597"),
"sname" : "lisi",
"sage" : 20
}
{
"_id" : ObjectId("5adeeaad949cd9c3aaf74598"),
"sname" : "wangwu",
"sage" : 20
}
{
"_id" : ObjectId("5adeeaad949cd9c3aaf74599"),
"sname" : "chenliu",
"sage" : 22
}
查找数据
db.youCollection.find(criteria, filterDisplay)
> db.student.find({sname: 'lisi'})
{ "_id" : ObjectId("5adeeaad949cd9c3aaf74597"), "sname" : "lisi", "sage" : 20 }
> db.student.find({},{sname:1, sage:1})
{ "_id" : 1, "sname" : "zhangsan", "sage" : 22 }
{ "_id" : ObjectId("5adeeaad949cd9c3aaf74597"), "sname" : "lisi", "sage" : 20 }
{ "_id" : ObjectId("5adeeaad949cd9c3aaf74598"), "sname" : "wangwu", "sage" : 20 }
{ "_id" : ObjectId("5adeeaad949cd9c3aaf74599"), "sname" : "chenliu", "sage" : 22 }
> db.student.find({sname: 'zhangsan', sage: 22})
{ "_id" : 1, "sname" : "zhangsan", "sage" : 22 }
> db.student.find({$or: [{sage: 22}, {sage: 25}]})
{ "_id" : 1, "sname" : "zhangsan", "sage" : 22 }
{ "_id" : ObjectId("5adeeaad949cd9c3aaf74599"), "sname" : "chenliu", "sage" : 22 }
> db.student.update({sname: 'lisi'}, {$set: {sage: 30}}, false, true) WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })> db.student.remove({sname: 'chenliu'})
WriteResult({ "nRemoved" : 1 })db.student.drop()
输入 exit 或者 Ctrl+C 退出 shell 命令模式
MongoDB(JavaAPI)
第一步:下载 Java MongoDB Driver 驱动 jar 包,Java MongoDB Driver 下载地址,默认的下载目录 ~/ 下载或者 ~/Downloads
第二步:打开 Eclipse,新建 Java Project,新建 Class,引入刚刚下载的 jar 包
第三步:编码实现
下面以 School 数据库为例,执行集合 student 的增删改查操作,如果没有 School 数据库和 student 集合请先创建,以下是源代码:
import java.util.ArrayList; import java.util.List;</span><span style="color: rgba(0, 0, 255, 1)">import</span><span style="color: rgba(0, 0, 0, 1)"> org.bson.Document; </span><span style="color: rgba(0, 0, 255, 1)">import</span><span style="color: rgba(0, 0, 0, 1)"> com.mongodb.MongoClient; </span><span style="color: rgba(0, 0, 255, 1)">import</span><span style="color: rgba(0, 0, 0, 1)"> com.mongodb.client.MongoCollection; </span><span style="color: rgba(0, 0, 255, 1)">import</span><span style="color: rgba(0, 0, 0, 1)"> com.mongodb.client.MongoCursor; </span><span style="color: rgba(0, 0, 255, 1)">import</span><span style="color: rgba(0, 0, 0, 1)"> com.mongodb.client.MongoDatabase; </span><span style="color: rgba(0, 0, 255, 1)">import</span><span style="color: rgba(0, 0, 0, 1)"> com.mongodb.client.model.Filters; </span><span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">class</span><span style="color: rgba(0, 0, 0, 1)"> TestMongoDB { </span><span style="color: rgba(0, 128, 0, 1)">/**</span><span style="color: rgba(0, 128, 0, 1)"> * </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> args </span><span style="color: rgba(0, 128, 0, 1)">*/</span> <span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">static</span> <span style="color: rgba(0, 0, 255, 1)">void</span><span style="color: rgba(0, 0, 0, 1)"> main(String[] args) { </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> insert();</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">插入数据。执行插入时,可将其他三句函数调用语句注释,下同</span> find(); <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">查找数据 </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> update();</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">更新数据 </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> delete();</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">删除数据</span>
}
/
* 返回指定数据库中的指定集合
* @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() );
}
}
}
课后作业
hadoop@hadoop-GL502VML:~$ mongo MongoDB shell version: 2.6.10 connecting to: test > use Project switched to db Project > db.createCollection('menber') { "ok" : 1 }> n=[{name:'朱家丰',Title:'MINSt 手写数字识别',Details:{assignment:'数据处理',weight:4,score:8}},{name:'蒋纪瑶',Title:'MINST 手写数字识别',Details:{assignment:'数据收集',weight:3,score:8}},{name:'徐志伟',Title:'MINSt 手写数字识别',Details:{assignment:'算法构建',weight:3,score:8}}]
[
{
"name" : "朱家丰",
"Title" : "MINSt 手写数字识别",
"Details" : {
"assignment" : "数据处理",
"weight" : 4,
"score" : 8
}
},
{
"name" : "蒋纪瑶",
"Title" : "MINST 手写数字识别",
"Details" : {
"assignment" : "数据收集",
"weight" : 3,
"score" : 8
}
},
{
"name" : "徐志伟",
"Title" : "MINSt 手写数字识别",
"Details" : {
"assignment" : "算法构建",
"weight" : 3,
"score" : 8
}
}
]
> db.menber.insert(n)
BulkWriteResult({
"writeErrors" : [ ],
"writeConcernErrors" : [ ],
"nInserted" : 3,
"nUpserted" : 0,
"nMatched" : 0,
"nModified" : 0,
"nRemoved" : 0,
"upserted" : [ ]
})
> db.menber.find().pretty()
{
"_id" : ObjectId("5adf1c004aee463a389fc303"),
"name" : "朱家丰",
"Title" : "MINSt 手写数字识别",
"Details" : {
"assignment" : "数据处理",
"weight" : 4,
"score" : 8
}
}
{
"_id" : ObjectId("5adf1c004aee463a389fc304"),
"name" : "蒋纪瑶",
"Title" : "MINST 手写数字识别",
"Details" : {
"assignment" : "数据收集",
"weight" : 3,
"score" : 8
}
}
{
"_id" : ObjectId("5adf1c004aee463a389fc305"),
"name" : "徐志伟",
"Title" : "MINSt 手写数字识别",
"Details" : {
"assignment" : "算法构建",
"weight" : 3,
"score" : 8
}
}
127.0.0.1 localhost 127.0.1.1 hadoop-GL502VML 192.168.145.219 Master 192.168.145.140 Slave2 172.19.77.75 Slave3 # The following lines are desirable for IPv6 capable hosts ::1 ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters