zoukankan      html  css  js  c++  java
  • mongoDB

    1.MongoDB介绍(数据库是用来存数据的)
    - 特点
    - mongodb是nosql(not only sql)数据库中的一种
    - 以bson(binary json)文档方式存储数据
    - 优点
    - 高开发效率:
    - 采用bson文档,避免了表(table)和对象(object)的映射
    - 使用对象语法,js语法上手容易
    - 高性能(查询性能):
    - 内存映射:比磁盘io操作快
    - 内嵌属性:避免了多表联查
    - 高扩展
    - 天生分布式数据库,易扩容
    - 非结构,可动态的扩展各种属性
    - 缺点
    - 不支持事务操作
    - 占用空间过大
    2.安装MongoDB
    - 安装过程:next -> 勾上checkbox 再点next -> custom -> browser选择存储mongdodb的磁盘路径 -> next -> install
    - 配置环境变量
    - 右键我的电脑 -> 属性 -> 左侧高级系统设置 -> 高级菜单最下面的环境变量 -> 找到系统变量中的path
    -> 把D:sdkMongoDBServer3.2in路径追加到变量值中(mongodb中的bin目录),确保与之前的路径之间有个分号;
    例如:
    D:sdk odejs;D:sdkMongoDBServer3.2in
    其中,nodejs后面有个分号把mongodb的路径隔离开
    - 创建数据存放文件夹D:sdkMongoDBdb
    - 修改mongoStart.bat文件的路径
    - 启动数据库
    3.数据库组成
    - 数据库
    - 集合:可以理解为数组
    - 文档(bson):可以理解为对象
    - key-val:可以理解为对象的属性
    4.数据类型
    5.mongo shell
    5.数据库操作
    - 连接到数据库:
    var conn = new Mongo("host:port");
    - 获取数据库对象(Database对象)
    var db = conn.getDB("test");
    - 安装好mongodb后,就会自动创建两个库:admin和test
    - 删除数据库
    db.dropDatabase();
    - 还可以使用另外一种方式:
    use test;
    show dbs;
    6.集合操作
    - 创建集合
    db.createCollection("name");
    - 获取集合
    db.getCollection("name");
    - 删除集合
    collections.drop();
    7.文档操作
    - 增
    - collections.insert({name: "zhangsan", age: 18});
    - 删
    - collection.remove({}) 删除所有,{}是query对象
    - collection.remove(query, false)
    - true 只删第一个
    - false 删除匹配的所有,默认
    - 改
    - collections.update(query, update, upsert, multi);
    - query 查询对象
    - update 更改
    - upsert
    - true 没有匹配的就新增
    - false 没有匹配什么都不做
    - multi
    - true 更新所有匹配文档
    - false 值更新第一个文档
    eg:
    collections.update(
    {
    name: "zhangsan",
    },
    {
    $inc: {age: 1},
    $set: {name: "zhangsandege", sex: "female"},
    $push: {phoneNum: "186xxx"},
    $sort: {age: 1}
    }, false, true);
    - 查
    - 查询
    collections.find({name: "zhangsan"});//{name: "zhangsan"}这个json对象就是query对象
    - 游标(数组的引用)
    var cursor = studentsColl.find();//查找所有的
    - 显示数据
    var cursor = studentsColl.find();
    cursor.forEach(function(obj) {
    printjson(obj);
    });
    - 限制字段
    studentsColl.find(query, {name: 1, age: 0})
    - 1 表示显示该属性
    - 0 表示去掉该属性
    - 统计
    cursor.count();
    - 排序
    cursor.sort({name: 1, age: -1});
    - 1 升序
    - -1 降序
    - 正则
    {name: {$regex: /^zhang.{0,}$/}}
    - 分页
    cursor.limit(num);
    - num为限制数量,前三个
    cursor.skip(num);
    - num为跨过数量
    cursor.skip(0).limit(10);
    cursor.skip(10).limit(10);
    - 去重
    collection.distinct("name", {age: 18});
    - 第一个参数是指定去重复的那个属性
    - 第二个参数是query对象
    - 分组
    var results = collections.group(
    {
    key: {name: 1, age: 0},
    cond: {},
    initial: {count: 0, vowels: 0, consonants: 0},
    $reduce: function(obj, prev) {
    prev.count++;
    prev.vowels += obj.stats.vowels;
    prev.consonants += obj.stats.consonants;
    },
    finalize: function(obj) {
    obj.total = obj.vowels + obj.consonants;
    }
    }
    );
    - 聚合
    collections.aggregate({
    {$match: {sex: "male"}},
    {$group: {_id: "$className", largest: {$max: "$age"}, smallest: {$min: "$size"}}},
    {$sort: {_id: 1}}
    });
    8.权限

  • 相关阅读:
    银联支付集成之 ---- 安卓
    在Mac系统下配置PHP运行环境
    ios工程中一天只让显示一次的广告,或是弹出窗,如何实现
    iOS工程中一天只让进行一次的操作如何做?
    简单实现UIlabel可复制功能
    iOS添加测试设备与调试
    iOS-最全的App上架教程
    javaIO--文件操作类
    javaIO--字符流
    javaIO--字节流
  • 原文地址:https://www.cnblogs.com/duanjiujiu/p/5551223.html
Copyright © 2011-2022 走看看