zoukankan      html  css  js  c++  java
  • 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位是计数器。



  • 相关阅读:
    bzoj 4606: [Apio2008]DNA【dp】
    UOJ #206. 【APIO2016】Gap【交互题】
    bzoj 4071: [Apio2015]巴邻旁之桥【splay】
    bzoj 4069: [Apio2015]巴厘岛的雕塑【dp】
    bzoj 4070: [Apio2015]雅加达的摩天楼【spfa】
    洛谷 P3625 [APIO2009]采油区域【枚举】
    bzoj 1178: [Apio2009]CONVENTION会议中心(少见做法掉落!)【贪心+二分】
    bzoj 1179: [Apio2009]Atm【tarjan+spfa】
    洛谷 P3621 [APIO2007]风铃【贪心】
    bzoj 4898: [Apio2017]商旅【Floyd+分数规划+二分】
  • 原文地址:https://www.cnblogs.com/sunnyfarmer/p/2204021.html
Copyright © 2011-2022 走看看