zoukankan      html  css  js  c++  java
  • Nosql_MongoDB数据库配置以及基本指令

    数据库(database)

    -数据库的服务器

    -服务器用来保存数据
    -mongod用来启动服务器
    -数据库的客户端
    -客户端用来操作服务器,对数据进行增删改查的操作
    -mongo用来启动客户端
    (不能关闭启动的服务器,否则新开的客户端无法连接)

    扩展:将mongodb设置为系统服务,可以自动在后台启动,不需要每次收到启动(http://docs.mongodb.com/manual/tutorial/install-mongodb-on-windows/)

    ①-在C盘根目录data文件夹中创建log文件夹
    ②-创建配置文件
    在目录 (你安装MongoDB的路径)下添加一个配置文件
    mongod.cfg

    (内容:

    systemLog:
    destination: file
    path: c:datalogmongod.log
    storage:
    dbPath: c:datadb

    )

    ③-以管理员的身份打开命令行窗口
    ④-执行如下命令

    sc.exe create MongoDB binPath= ""C:MongoDBinmongod.exe" --service --config="C:MongoDBmongod.cfg"" DisplayName= "MongoDB" start= "auto"

    备注:sc.exe create MongoDB binPath= ""mongod的bin目录mongod.exe" --service --config="mongo的安装目录mongod.cfg"" DisplayName= "MongoDB" start= "auto"
    ⑤-启动mongodb服务

    ⑥-如果启动失败,证明上边的操作有误,
    在控制台输入 sc delete MongoDB 删除之前配置的服务
    然后从第一步再来一次

    -- 基本概念

    数据库(database)
    集合 (collection)
    文档(document)


    -在MongoDB中,数据库和集合都不需要手动创建
    当我们创建文档时,如果文档所在的集合或者数据库不存在会自动创建数据库和集合

    -- 基本指令

    show dbs
    show databases
    - 显示当前的所有数据库
    use 数据库名
    - 进入到指定的数据库中
    db
    - db表示的是当前所处的位置
    show collections
    - 显示数据库中所有的集合

    -- 数据库的CRUD(增删改查)的操作

    - 向数据库中插入文档
    db.<collection>.insert(doc)
    - 向集合中插入一个文档
    - 例子: 向test数据库中的,stus集合中插入一个新的学生对象

    {name:"孙悟空",age:12,gender:"男"}
           db.stus.insert({name:"孙悟空",age:12,gender:"男"})


    db.<collection>.find()

    - 查询当前集合中所有的文档

    ①-插入数据

     向数据库中插入文档



    db.<collection>.insert()
    - 向集合中插入一个或多个文档 
    - 当我们向集合中插入文档时,如果没有给文档指定_id属性,则数据库会自动为文档添加_id,该属性用来作为文档的唯一标
    - _id我们可以自己指定,如果我们指定了数据库就不会再添加了,如果自己指定_id 也必须确保它的唯一性


    db.<collection>.insertOne()
     - 插入一个文档对象
    
    
    db.<collection>.insertMany()
     - 插入多个文档对象 

    ②-查询

     查询
     db.collention.find() 
      - find()用来查询集合中所有符合条件的文档 
      - find()可以接收一个对象作为条件参数 {}表示查询集合中所有的文档 {属性:值} 查询属性是指定值的文档 




    db.collection.findOne()
      - 用来查询集合中符合条件的第一个文档 
      - findOne()返回的是一个文档对象 


    db.collection.find({}).count() 
      - 查询所有结果的数量

    ③-修改

    修改

    db.collection.update(查询条件,新对象) 
     - update()默认情况下使用新对象替换旧对象 
     - 如果需要修改指定的属性,而不是替换需要使用"修改操作符"来完成修改 

     $set 可以用来修改文档中的指定属性 
     $unset 可以用来删除文档中的指定属性 
     - update()默认修改一个 


    db.collection.updateOne() 
     - 修改一个符合条件的文档 
    
    
    db.collection.updateMany() 
     - 同时修改多个符合条件的文档 


    db.collection.replaceOne() 
     - 替换一个文档

    ④-删除

    删除
    db.collection.remove() 
     - 删除符合条件的所有文档(默认情况下会删除多个) 
        如果remove()第二个参数传递一个true,则只会删除一个 


    - 如果只传递一个空对象作为参数,则会删除集合中的所有文档

    db.collection.deleteOne() 
    
    db.collection.deleteMany() 
     - remove()可以根据条件来删除文档,传递的条件的方式和find()一样 
    
    db.collection.drop(); 
     - 删除集合 
     
    db.dropDatabase() 
     - 删除数据库

    文档(document)

    文档是MongoDB中数据的基本单元,类似关系数据库的行,多个键值对有序的放置在一起便是文档
    MongoDB中以文档的方式存取记录,如一条记录格式如下:

    {“username”:“sunsu”,“age”:12,email:'damowang@huohu.com','sex':女}
    {“username”:“sunsu”,“age”:12}
    {“Username”:“sunsu”,“age”:12}
    {“Username”:“sunsu”}

    注意:
    (1)以上是几个不同的文档,MongoDB区分大小写的数据类型,第一个age字段是数字类型,第二个age是字符串类型
    (2)每一个文档尺寸不能超过16M
    (3)MongoDB的文档不能有重复的键
    (4)文档的键是字符串。除了少数例外情况,键可以使用任意UTF-8字符

    文档之间的关系:
    一对一(one to one)
      -    夫妻 (一个丈夫 对应 一个妻子)
      -   在MongoDB,可以通过内嵌文档的形式来体现出一对一的关系

    一对多(one to many)/多对一(many to one)

       -   父母 - 孩子
           用户 - 订单
           文章 - 评论
       - 也可以通过内嵌文档来映射一对多的关系

    多对多(many to many)
      -  分类 - 商品
         老师 - 学生

    举例:

    //一对一
    db.wifeAndHusband.insert([{ 
    name:"黄蓉", 
    husband:{ name:"郭靖" }
     }, { 
    name:"潘金莲", 
    husband:{ name:"武大" } 
    } ]);
    
    db.wifeAndHusband.find();
    //一对多 用户(users)和订单(orders)
    db.users.insert([{
    username:"孙悟空"},{
    username:"猪八戒"}]);
    
    db.order.insert({list:["苹果","香蕉","大鸭梨"],
    user_id:ObjectId("5d2bd20b782eae7ac9b5b5be")
    });
    
    db.users.find();
    db.order.find();
    
    //查找用户孙悟空的订单
    var user_id = db.users.findOne({
    username:"孙悟空"})._id;
    db.order.find({
    user_id:user_id});
    //多对多
    db.teachers.insert([{
    name:"洪七公"},{
    name:"黄药师"},{
    name:"龟仙人"}]);
    db.stus.insert([{
    name:"郭靖",
    tech_ids:[
    ObjectId("5d2bd518782eae7ac9b5b5c4"),
    ObjectId("5d2bd518782eae7ac9b5b5c5")
    ]},{
    name:"孙悟空",
    tech_ids:[
    ObjectId("5d2bd518782eae7ac9b5b5c4"),
    ObjectId("5d2bd518782eae7ac9b5b5c5"),
    ObjectId("5d2bd518782eae7ac9b5b5c6")
    ]}]);
    
    db.teachers.find();
    db.stus.find();
    
    

    集合(collection)

    集合就是一组文档,多个文档组成一个集合,集合类似于mysql里面的表,
    无模式是指,在同一个集合中可以包含不同格式的文档,如:
    {“Name”:“Mongodb”,“Type”:“Nosql”}
    {“UserName”:“Sunsu”,“age”:12,“Gender”:“male”}
    以上两个文档可以放在同一个集合中
    在mysql需要先建表再插入数据
    模式自由:意思是集合里面没有行和列的概念
    注意:MongoDB中的集合不用创建、没有结构,所有可以放不同格式的文档

    我是一个刚刚开始写博客的大可,内容有不详细或是错误的,还希望各位大佬私信我,我会进行纠正,谢谢啦!^-^
  • 相关阅读:
    转载 jenkins执行selenium 测试 浏览器不显示解决方法
    jmeter用beanshell调用自己写的jar进行MD5加密
    深入理解Spring MVC 思想
    springmvc和json整合配置方法
    getFragmentManager和getChildFragmentManager
    android
    HTTP 请求头与请求体
    Android中ImnageView 中如何让图片拉伸显示?
    ExecutorService 的理解与使用
    SpringMVC源码分析系列
  • 原文地址:https://www.cnblogs.com/sunjiaojiao/p/11176487.html
Copyright © 2011-2022 走看看