• mongodb 学习笔记--- 基础知识


    1.mongodb的安装

    (1) mac使用brew 安装就好 brew install mongodb

    (2) mkdir /data/db 作为mongodb默认的数据目录 并 sudo chown -R $(whoami) /data/db 赋予其权限

    2.mongodb 命令行(分为2步)

    (1)无密码的初始状态:

           a.直接执行 mongod  开启mongodb的连接   

           b.打开另一个命令行窗口 执行 mongo 进入命令行

     (2)存在用户密码的正常管理状态:

    3.一些名词

    (1)文档 作为mongodb中数据组织的最基层,相当于关系型数据库中的 行。  就是js中的一个对象的json.stringify ,不过不同于js对象的是,文档中key-value 是有顺序的,{"x":1,"y":2} 和 {"y":2,"x":1}是不相同的

      (2) 集合 由若干文档组成的数据集,相当于关系型数据中的表。建议在创建集合的时候将同种类型结构的文档放入同一集合中,这样能减少相应的磁盘寻道操作。集合在命名时不要用system.开头,且其中不能出现 [空字符,$]

    (3)数据库 由若干集合组成的数据集。 命名时正常命名就好,除了[admin,local,config]外,最长为64字节,建议全部小写

      (4) 命名空间  用于表示一个集合的完全限定名,形式为:数据库名称.集合名称

      (5) 基本数据类型: null

                                布尔

                                数值:默认使用64位浮点,想表示整数时用NumberInt("2"),NumberLong("2")

                                字符串

                                日期 : 根据shell本地时间显示日期对象,存储时为字符串,但实际是日期对象

                                正则

                                数组

                                内嵌文档

                                对象id  : ObjectId()  用于创建文档的唯一标识,如果不创建系统会自动创建_id字段

                                二进制数据

                                js代码 

    4. 基本数据库操作

    (1)db   查看当前db名称

      (2) show dbs 查看当前所有db

    (3)use [dbname]   进入此db 当db不存在时临时会创建一个,但是show dbs并不会展示该数据库,只有在插入实际数据后才会存在。

      (4) show collections 显示当前db下的所有集合

      (5) help  查看其余命令(还是很有用的)可以db.help() 查看db可用的方法,db.[集合名].help() 发现集合中的方法  剩余方法不再介绍,查看help就会有收获

    5. CRUD等文档操作

    (1) 插入文档: insert  只需要在 db(即当前数据库).集合.insert({...})即可,批量操作时传入文档的数组。单个文档大小限制为16MB,可以通过Object.bsonsize方法查看。

    (2) 查询文档:db.集合名称.find()  查询出所有文档。 当给find传参为文档的某一个或多个key-value 时查询出符合条件的文档 如  find({"age":15,"name":"jack"})。

                        db.集合名称.findOne() 查询出第一条文档。传参同上

    (3) 更新文档: db.集合名称.update(kv条件,文档)  这里第二个参数会完全将符合条件的文档覆盖,并不会片段更新,    传入第三个参数为true时,为upsert操作:有就更新,没有新增; 传入第四参数为true时,全部更新满足条件的文档

    (4) 删除文档:db.集合名称.remove({...})  传入空对象时全删,传了条件只删除满足条件的。删除是永久的,不能恢复

    (5) 综合操作: save: 如果传入的文档参数带有_id 则update,如果没有则insert

    6.shell 执行js脚本

    mongo /xxx/xx.js /yyy/yyy,js 即可,脚本内容如下

    // 脚本1
    var data = [
        {"name":"peter","age":13},
        {"name":"mary","age":14}
    ];
    db = db.getSisterDB("test");
    db = db.getSisterDB("foobar");
    db.people.insert(data);
    
    // 脚本2
    
    // db = db.getSisterDB("test");
    // db = db.getSisterDB("foobar"); 此处再写就是多余,两个脚本是上下承接关系,不用再重新指定db
    db.people.update({"age":14},{"name":"kaka","age":14})

    也可以在shell中使用load函数运行外部脚本:load(/xxx/xxx.js)  这里的路径必须为绝对路径,无法解析~ 符号

    用run("ls","-a","/xxx/xxx") 执行命令行命令,不过这么用很别扭

    7.其他

    (1)  .mongorc.js 会存在于用户根目录下,mac中就是 ~/下,里面的脚本会在启动shell时执行

  • 相关阅读:
    我把 Spring Boot Banner 换成了美女背景后……
    玩大发了,Tomcat 8.5 升级有坑…
    10 分钟快速上手 Shiro 新手教程
    为什么 HashMap 的加载因子是0.75?
    图解 Spring 循环依赖,写得太好了!
    单点登录的实现原理是什么?怎么实现?
    Maven三种仓库详解
    为什么 wait,notify,notifyAll 在 Object 类定义而不是 Thread 类?
    我们公司用了6 年的分布式锁,很是厉害!
    Google 开源的依赖注入库,比 Spring 更小更快!
  • 原文地址:https://www.cnblogs.com/JhoneLee/p/9188579.html
Copyright © 2020-2023  润新知