• 大数据课堂


    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;
         
        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() );
                }
            }
        }

     课后作业

    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
  • 相关阅读:
    Jenkins可用环境变量列表以及环境变量的使用(Shell/Command/Maven/Ant)
    CreateJS结合Falsh工具生成Canvas动画(加密字符串的由来)
    Linux下使用mv重命名文件或者移动文件(增强版的工具为rename)
    Windows7/8/10中无法识别USB设备的问题解决
    Eclipse工程中Java Build Path中的JDK版本和Java Compiler Compiler compliance level的区别(转)
    使用Docker部署Spring boot项目
    豆瓣API
    scrapy
    elasticsearch x-pack
    Document
  • 原文地址:https://www.cnblogs.com/IAMzhuxiaofeng/p/8931462.html
Copyright © 2020-2023  润新知