zoukankan      html  css  js  c++  java
  • MongoDB学习知识点总结(一)

    json的两种格式:

    JSON对象 { }

    JSON数组【】

    MongoDB的数据模型是面向文档的,所谓文档是一种类似于LSON的结构,简单理解MongoDB这个数据库中存的是各种各样的json(BSON)

    三个概念:

    数据库(database)

      --数据库是一个仓库,在仓库中可以存放集合

    集合 (collection)

      --集合类似于数组,在集合中可以存放文档

     文档 (document)

      --文档数据库中的最小单位,我们存储和操作的内容都是文档

    MongoDB的版本偶数版是稳定版,奇数版是开发板

    MongoDB的安装步骤:

    1、安装MongoDB  2、配置环境变量 : 需要将MongoDB的bin目录添加到windows的环境变量之中,3、在c盘根目录创建一个文件夹data/db

    4、打开命令窗口,输入mongod来启动MongoDB服务器

    mongoDB 的默认端口是27017

    5、在打开一个新的窗口输入mongo来启动后客户端

    将MongoDB设置为系统服务

    1、在c盘根目录创建如下文件夹:

         data/db

        data/log

    2、创建配置文件

    在安装文件夹找到bin目录的上一级目录,在该目录中创建mongod.cfg

    3、以管理员的身份打开命令行窗口

    4、在窗口中执行以下命令:sc.exe create MongoDB binPath= ""D:MongoDBinmongod.exe" --service --config="D:MongoDBmongod.cfg"" DisplayName= "MongoDB" start= "auto"

     --在MongoDB中,数据库和集合都不需要创建 ,数据库和集合会在第一次插入文档的时候进行创建

    --基本的指令

      show dbs  --显示所有的数据库

      use 数据库名: --进入到指定的数据库中

      db --表示当前所在的数据库

      show collections --显示当前数据库的所有集合

     db.<collection>.insert() --向指定的集合中插入文档

    db.<collection>.find() --显示指定集合中的文档

    mongodb的基本语法知识点汇总

    //进入到my_test数据库 
    use my_test
    //2、向数据库的user集合中插入一个文档 
    db.user.insert({usaename:"zhangsan"})
    /*
        db.users.insert() --向集合中插入一个或者多个文档 
        db.collection.insertone() --向集合中插入一个文档,该方法中只能传递一个document对象
        db.collection.insertMany()  --向集合中差诶多个文档,该方法只能接受数组作为参数
        
    */  
    //插入多个文档 
    db.user.insert([
    {username:"aaa"},
    {username:"bbb"},
    {username:"ccc"}
    ]);  
    db.user.find()
    //3、查询user集合中的文档 
    db.user.find() --如果不穿对象,查询指定集合中所有符合条件的文档 
    db.user.find({username:"aaa"}) --返回的是一个数组
    db.user.findOne() --查询集合中符合条件的第一个文档,返回的是一个具体的对象 
    //4、统计数据库user中集合的数量 
    db.user.count()
    //5、向数据库user集合中的username为aaa的添加一个address属性,属性值为zhongguo 
    /*
        db.collection.update()  --修改文档,默认情况下会用新的文档替换旧的文档 
        --如果不需要整个替换文档,则需要使用修改器
        $set 用来向文档中添加一个属性 
    */
    db.user.update({username:"aaa"},{username:"aaa",address:"zhongguo"})
    db.user.update({username:"bbb"},{$set:{address:"zhongguobeijing"}})
    db.user.find()
    //删除新添加的address属性: 添加一个修改器: $unset 
    db.user.update({username:"aaa"},{$unset:{address:"zhongguo"}})
    
    //向username为zhangsan的文档中,添加一个hobby:{cities:["beijing","shanghai","zhongguo","lanzhou","xinjiang"]}
    db.user.update({username:"aaa"},{$set:{hibby:{cities:["beijing","shanghai","lanzhou","xian"],movies:["zhizhuxia","dashan","xuezhe"]}}})
    db.user.find()
    /*
        mongoDB 的文档的属性值也可以是一个文档,如果一个文档的属性还是文档,我们称这个文档叫做内嵌文档   
    */
    /*
        要匹配内嵌文档需要。的形式进行查询
    */
    db.user.find({"hibby.cities":"beijing"})
    //向数组中添加一个值
    db.user.update({username:"aaa"},{$push: {"hibby.cities":"shanghai"}})
    db.user.find()
    // $addtoset 是用来向数组中添加一个不存在的元素
    /*
        删除喜欢北京的用户,如果remove中传递一个空的集合作为参数,则会删除所有的文档
        db.collection.drop() --删除集合,如果数据库中只有一个集合,会将数据库一起删除
        db.dropDatabase()  --专门用来删除数据库的 
        
    */
    
    db.user.remove({"hibby.cities":"beijing"})
    db.user.find()
    
    /*
        向集合中插入文档时,mongodb数据库会自动为文档添加一个_id属性
        属性值会由Mongodb调用odjectID()来自动生成
        _id会作为文档的唯一标识
        可以自己指定_id属性,如果 手动指定了数据库不会再自动添加
        手动指定的id必须去报唯一,不建议自己指定
    */
    
    //向number中插入两万条数据
    for(var i = 1;i < 20000;i++){
      db.numbers.insert({num:i})
    }
    
    db.numbers.find()
    //为了提高性能,将数值先放到一个数组中,然后在一次性插入
    db.numbers.drop()
    
    var arr = [];
    for(var i = 1;i<=20000;i++){
       arr.push({num:i});
    }
    db.numbers.insert(arr);
    //查询numbers中number大于500的文档、
    /*
         查询操作符 ¥eq 查询指定的字段是否等于某个值
    
    */
    
    db.numbers.find({num:{$eq:10}})
    //查询大于指定值得数据 $gt
    //查询大于等于某个值得字段: $gte
    db.numbers.find({num:{$gte:5000}})
    //查询小于某个值得字段 
    db.numbers.find({num:{$lt:30}})
    //查询numbers中num大于40小于50的文档 
    db.numbers.find({num:{$gt:40,$lt:50}})
    //查询大于19000或者小于40的 
    db.numbers.find({$or: [{num:{$gt:19000}},{num:{$lt:40}}]})
    //查询集合中前十条 数据  limit用来限制显示数据的最大的条数
    db.numbers.find({}).limit(10) 
    //查询一个集合中前10到20条数据 skip用于跳过指定数量的数据
    db.numbers.find({}).limit(10).skip(10)
    //在mongodb中通过limit()和skip()两个函数实现分页 

    用java API 操作mongodb数据库:

    package com.wcg.mongodb;
    
    
    
    import java.nio.file.DirectoryStream.Filter;
    
    import org.bson.Document;
    import org.junit.Test;
    
    import com.google.gson.Gson;
    import com.mongodb.MongoClient;
    import com.mongodb.client.FindIterable;
    import com.mongodb.client.MongoCollection;
    import com.mongodb.client.MongoDatabase;
    import com.mongodb.client.model.Filters;
    
    public class TestMongodb {
    
        
        @Test
        public void test01() {
            //连接数据库服务器
            //连接到指定的mongodb数据库,如果不设置host和port,则自动连接到local
            MongoClient client =  new MongoClient();
            //连接到指定的数据库 
            MongoDatabase testDB = client.getDatabase("test");
            //操作数据库中的集合,获取指定集合中的对象
            MongoCollection<Document> usercall = testDB.getCollection("user");
            //创建一个文档 
            Document doc = new Document("name","lsio");
            //向user集合中插入一个文档
            usercall.insertOne(doc);    
        }
        
        @Test
        //将java的一个对象存储到数据库中
        public void test02() {
            //连接数据库服务器 
            MongoClient client =  new MongoClient();
            //连接到指定的数据库 
            MongoDatabase testDB =  client.getDatabase("test");
            //操作数据库中的集合,获取指定集合中的对象 
            MongoCollection<Document> stucoll = testDB.getCollection("students");
            
            //创建一个student对象
            Student student = new Student("武松",19,"梁山");
            //将stu装换成一个json对象
            Gson gson =  new Gson();
            String stuJson = gson.toJson(student);
            //将json转换为document
            Document doc = Document.parse(stuJson);
            //将student对象插入到数据库中 
            stucoll.insertOne(doc);    
        }
        @Test
        //查询MongoDB数据库中的数据
        public void test03() {
            
            MongoClient client = new MongoClient();
            
            MongoDatabase testDB = client.getDatabase("test");
            
            MongoCollection<Document> stucoll = testDB.getCollection("students");
            
            //查询数据库中的文档 
            Document doc = (Document) stucoll.find().first();
            //将document转换为json
            Gson gson = new Gson();
            String dicjson = doc.toJson();
            Student stu = gson.fromJson(doc.toJson(), Student.class);
            System.out.println(stu.getGender());
        }
        //查询多条数据
        @Test
        public void test04() {
            
            MongoClient client = new MongoClient();
            MongoDatabase testDB = client.getDatabase("test");
            MongoCollection<Document> stucoll = testDB.getCollection("students");
            
            //查询集合中的所有文档
            FindIterable<Document> docs = stucoll.find();
        
            for(Document doc: docs) {
                System.out.println(doc.toJson());
            }    
        }
        //有条件的查询
        @Test
        public void test05() {
            
            MongoClient client = new MongoClient();
            MongoDatabase testDB = client.getDatabase("test");
            MongoCollection<Document> stucoll = testDB.getCollection("students");
            
            //查询集合中的所有文档
            FindIterable<Document> docs = stucoll.find(Filters.eq("gender","梁山"));
        
            for(Document doc: docs) {
                System.out.println(doc.toJson());
            }    
        }
        
        //删除数据
        //有条件的查询
            @Test
            public void test06() {
                
                MongoClient client = new MongoClient();
                MongoDatabase testDB = client.getDatabase("test");
                MongoCollection<Document> stucoll = testDB.getCollection("students");
                
                //删除需要的文档
                stucoll.deleteOne(Filters.eq("gender","女儿国"));        }
        
            //跟新数据
            @Test
            public void test07() {
                
                MongoClient client = new MongoClient();
                MongoDatabase testDB = client.getDatabase("test");
                MongoCollection<Document> stucoll = testDB.getCollection("students");
                
                //删除需要的文档
                stucoll.updateOne(Filters.eq("gender","梁山"),new Document("$set",new Document("gender","开封")));
                }    
        
    }
  • 相关阅读:
    递归算法浅谈
    c语言中的位移位操作
    程序猿面试金典-数组和字符串
    很好的理解遗传算法的样例
    垂直搜索的相关知识点总结
    php单元測试
    Android中ExpandableListView控件基本使用
    几种代价函数
    ZJU-PAT 1065. A+B and C (64bit) (20)
    谷歌技术&quot;三宝&quot;之MapReduce
  • 原文地址:https://www.cnblogs.com/wcgstudy/p/11192441.html
Copyright © 2011-2022 走看看