zoukankan      html  css  js  c++  java
  • mongodb学习02基础知识

    文档

    • 键值对的一个有序集
    • 文档被表示为对象
    • 文档必须有一个 _id
    {"greeting" : "Hello, world!"}`
    

    • 文档的键是字符串
    • 区分类型和大小写
    • 不能含有空字符()
    • .$ 是保留字
    • 不能由重复的键
    • 键/值对是有顺序的

    集合

    • 一组文档
    • 动态模式: 一个 集合里的文档可以是多样;

    命名

    • 集合名不能是空字符串;
    • 不能包含空字符();
    • 不能以system开头;
    • 不能包含保留字符$

    子集合

    • 集合用.分隔不同命名空间的子集合

    数据库

    • 多个集合可以组成数据库

    命名

    • 不能是空字符串
    • 基本上只能使用ASCII中的字母和数字
    • 区分大小写,简单来将,应该都用小写
    • 最多64字节
    • 如果不创建数据库直接创建集合,会默认在test数据库中

    保留数据库

    • admin: 这是一个root数据库,如果将一个用户添加到此数据库,将自动获得所有数据库的权限;一些特定服务器端命令也只能从admin数据库运行
    • local:这个数据库永远不可复制,一台服务器上的所有本地集合都可以存储在这个数据库中
    • configmongodb用于分片设置时,分片信息会存储在此数据库

    启动

    • mongod在没有参数的情况下会使用默认数据目录:/data/db
    • 默认监听接口:27017

    数据类型

    • null
    • 布尔值
    • 数值:默认64位浮点值;对于整数值,可使用NumberInt(表示4字节带符号整数),NumberLong(表示8字符带符号整数)
    {"x": NumberInt("3")}
    {"x": NumberLong("3")}
    
    • 字符串类型

    • 日期: {"x": new Date()}

    • 正则表达式:{"x":/foobar/i}

    • 数组

    • 内嵌文档: {"x":{"foo":"bar"}}

    • _id是一个12字节的ID,默认类型ObjectId :{"x":objectId()}

      • 如果插入文档时没有 "_id" 键,系统会自动创建一个;

      • 由 24 个十六进制数字组成的字符串;

      • ObjectId 的 12 字节按照如下方式生成:

    • 二进制数据:是一个任意字节的字符串,不能直接在sell中使用;是将非UTF-8字符保存到数据库的唯一方式

    • 代码

    客户端

    db 变量

    • 启动时 shell 会连到 MongoDB 服务器的 test 数据库, 并将数据库连接赋值给全局变量 db;
    • 这个变量是通过 shell 访问 MongoDB 的主要 入口点;
    • 查看 db 当前指向哪个数据库: db;

    基本操作

    • 创建: db.posts.insert(post);
    • 查找: db.posts.find();
    • 更新: db.posts.update([限定条件], newpost);
    • 删除: db.posts.remove(限定条件);

    连接

    • 启动shell时默认连接到test数据库;
    • 启动shell时指定机器名和端口,就可以连接到一台不同的机器: $ mongo some-host:30000/myDB;
    • 设置启动时不连接任何数据库: $ mongo --nodb; 之后可以再设置连接
     > conn = new Mongo("some-host:30000")
         connection to some-host:30000
     > db = conn.getDB("myDB")
         myDB
    

    js脚本

    使用MongoDB shell执行js脚本;

    • 直接在命令行中传递脚本,运行后退出;
    $ mongo script1.js script2.js script3.js
    
    • 可以指定的主机 / 端口上的mongod运行脚本,运行后退出;
    $ mongo --quiet server-1:30000/foo script1.js script2.js script3.js
    
    • 可以在脚本中使用print()函数将内容输出到标准输出;
    • 也可以使用load()函数,从交互式 shell 中运行脚本,运行后不退出:
     > load("script1.js")
         I am script1.js
     >
    
    • 使用js脚本初始化/辅助mongodb设定

     // defineConnectTo.js
    /**
    * 连接到指定的数据库,并且将db指向这个连接 */
         var connectTo = function(port, dbname) {
             if (!port) {
                 port = 27017;
             }
             if (!dbname) {
                 dbname = "test";
             }
             db = connect("localhost:"+port+"/"+dbname);
    return db; };
    
    

    > load('defineConnectTo.js')

    run方法

    • 查找当前目录 run("pwd");
    • 行命令行程序: run("ls", "-l", "/home/myUser/my-scripts/");
    • 通常来说,这种使用方式的局限性非常大,因为输出格式很奇怪,而且不支持管道。

    .mongorc.js文件

    • 这个文件会在启动shell时自动运行;
    • 位置在用户主目录;
    • 启动时指定--norc参数,就可以禁止加载 ;

    定制shell提示

    • 设置prompt变量:
    //显示操作时间
    prompt = function() {
      return (new Date())+"> ";
    };
    
    //显示当前数据库
    prompt = function() {
      if (typeof db == 'undefined') {
          return '(nodb)> ';
       }
      // 检查最后的数据库操作
     try {
       db.runCommand({getLastError:1});
      } catch (e) {
         print(e); 
      }
       return db+"> ";
     };
    
    

    编辑复合变量

    > EDITOR="/usr/bin/vim"
    > var wap = db.books.findOne({title: "War and Peace"})
    > edit wap
    
  • 相关阅读:
    amaze(妹子~) 好像挺好玩
    php 获取图片base64编码格式数据
    一些laravel博文
    微信移动端(wap)开发调试工具
    深入理解控制反转(IoC)和依赖注入(DI)
    使用 composer 下载更新卸载类库
    ionic ui 框架
    laravel 添加 404 页面
    laravel 调试模式及日志配置
    iOS-方法之+ initialize 与 +load
  • 原文地址:https://www.cnblogs.com/jinkspeng/p/4504156.html
Copyright © 2011-2022 走看看