• MongoDB学习笔记——初体验


    MongoDB是一个模式自由的非关系型数据库,由C++编写。

    如果MongoDB模式自由,那么要使用多个集合的理由如下:

    1、让不同类型的文档(行)放在一个集合中,那么做查询的应用程序需要处理所有不同类型的文档,耗时;

    2、在一个集合里面查询特定类型的文档在速度上很不划算?(不明白)

    3、把同类型的文档放在一个集合里面,让数据更加集中,在查询的时候可以减少消耗磁盘寻到的操作;

    4、创建索引的时候,文档会有附加的结构;同种类型的文档放在同一个集合里面,让索引更加有效??(不明白)

    部署MongoDB(windows)

    1、创建数据文件夹,如D:/data/db

    2、在cmd中运行MongoDB目录下的bin/mongod.exe,命令如下:

    mongod --dbpath D:\data\db

    ok了~

    运行MongoDB客户端shell

    运行MongoDB目录下的bin/mongo.exe

    这个shell是一个功能完备的javascript解析器,而MongoDB的创建、读取、更新和删除(CRUD)都是通过javascript完成的,不需要sql语句。

    其中db对象代表当前的数据库,连接的时候默认连接test数据库。

    选择数据库(不需要创建):

    use dbname;

    添加doc到collection中(collection不需要手动创建):insert、save

    person1={"name":"sam", "age":10};
    person2={"name":"samson", "age":11};
    //执行这些doc插入语句的时候,名字为person的collection自动创建,并有一个对应的数据库持久化文件存储在data/db
    db.person.insert(person1);
    //或者用db.person.save(person1);
    db.person.insert(person2);
    //或者用db.person.save(person2);
    /**
    **save方法是当collection存在主键一样的doc,则会对其进行属性更新,否则插入doc;
    **insert方法则是直接插入一个新的doc,如果存在主键一样的doc,则会报错。
    **/

    读取doc:find、findOne、limit

    db.person.find();//读取所有的doc
    db.person.find().limit(10);//限制读取的doc的数量
    db.person.findOne({"age":11});//读取所有age为11的doc

    更新doc:update

    person1.age=15;
    person1.gender="male";
    //将name为sam的doc所有属性,更新为person1的属性,还可以添加新的property
    db.person.update({"name":"sam"},person1);

    删除doc:remove

    db.person.remove();//清空collection
    db.person.remove({"age":20});//删除age为20的doc

    MongoDB中每个文档的_id
    加入添加到collection中的doc没有_id属性,那么系统会自动创建一个,并附加到doc里面去。

    系统生成的_id为12字节的24位字符串,每字节为一个16进制的字符;前4个字节为从标准纪元开始的时间戳,然后是3位的机器名,接着是2位的PID(程序id),最后3位是计数器。



  • 相关阅读:
    一本通1331后缀表达式的值
    一本通1198 逆波兰表达式
    一本通1311 求逆序对(归并排序应用)
    快速排序
    一本通1310 车厢重组(冒泡排序,类似逆序对)
    一本通1186 出现次数超过一半的数(类似桶排序)
    一本通1216 红与黑 (代码没有参考任何博客,完全是自己写的,我搜索出山了!!!)
    一本通1222 放苹果
    一本通 1212 LETTERS
    一本通1215 迷宫
  • 原文地址:https://www.cnblogs.com/sunnyfarmer/p/2204021.html
Copyright © 2020-2023  润新知