zoukankan      html  css  js  c++  java
  • mongodb-探索阶段

     1.数据库

    一个mongodb中可以建立多个数据库。

    MongoDB的默认数据库为"db",该数据库存储在data目录中。

    MongoDB的单个实例可以容纳多个独立的数据库,每一个都有自己的集合和权限,不同的数据库也放置在不同的文件中。

    "show dbs" 命令可以显示所有数据的列表。等同于MySQL show databases;

    如果你想查看所有数据库,可以使用 show dbs 命令:

     db:默认的数据库名; test:表名字  insert:插入操作  find:查询操作

    执行 "db" 命令可以显示当前数据库对象或集合。

    2.linux 平台mongodb后台守护进程启动

    Mongodb可以通过命令行方式配置文件的方式来启动,具体命令如下:

    命令行:

    [root@localhost mongodb]# ./bin/mongod --dbpath=/data/db 

     配置文件:

    [root@localhost mongodb]# ./bin/mongod -f mongodb.conf  

    但是这两种方式都是在前台启动Mongodb进程如果Session窗口关闭,Mongodb进程也随之停止。不过Mongodb同时还提供了一种后台Daemon方式启动,只需要加上一个"--fork"参数即可,值得注意的是,用到了"--fork"参数就必须启用"--logpath"参数

    如下所示:

    [root@localhost mongodb]# ./bin/mongod --dbpath=data/db --fork  
    --fork has to be used with --logpath  
    [root@localhost mongodb]# ./bin/mongod --dbpath=data/db --fork --logpath=log/mongodb.log   
    all output going to: /opt/mongodb/log/mongodb.log  
    forked process: 3300  
    [root@localhost mongodb]#   

    daemon方式启动的fork参数也可以配置配置文件中,如下所示:

    port=27017  
    dbpath=data/db  
    logpath=log/mongodb.log  
    logappend=true  
    fork=true  

    然后通过配置文件启动后mongodb也是在后台启动了:

    [root@localhost mongodb]# ./bin/mongod -f mongodb.conf   
    all output going to: /opt/mongodb/log/mongodb.log  
    forked process: 3377  

    3.MongoDB数据库以服务的方式在Windows的后台运行

    mongod --dbpath d:mongodbdatadb --logpath d:mongodblogMongoDB.log --install --serviceName "MongoDB" 

    直接加到系统服务,执行完自己就启动了,开机同样自启动

    参考:windows下MongoDB的安装,配置与开机自启动 - 都市烟火 - 博客园

    4.mongo.cfg 文件

    systemLog:
        destination: file
        path:  D:softworemongodb3datalogmongod.log
    storage:
        dbPath: D:softworemongodb3datadb

    5.MongoBooster 图形界面

    NoSQLBooster - The Smartest GUI Tool and IDE for MongoDB

    6.用show dbs查看,总是只有local一个数据库?

    use  newdbname ; 切换或者创建新的集合(创建时,只有插入数据后,新集合才有效)

    使用命令“use 数据库名称”,只是标记你要创建新的数据库,但是实际没有任何数据写入,所以mongodb是不会真的创建数据库的;你必须在新的数据库下面写入数据,例如:

    db.test.insert({"key":"value"})

    7.MongoDB 常用语句

    use DATABASE_NAME   如果数据库不存在,则创建数据库,否则切换到指定数据库。
    show dbs             查看所有数据库
    db.dropDatabase()    删除当前数据库,默认为 test,你可以使用 db 命令查看当前数据库名
    db.createCollection(name, options)  创建集合,类似数据库中的表,
    db.collectionName.drop()     删除集合
    show tables             # 别名, show collections  命令会更加准确点
    db.COLLECTION_NAME.insert(document)  插入文档
    db.COLLECTION_NAME.save(document)  插入文档,该方法新版本中已废弃,db.collection.insertOne() 或 db.collection.replaceOne() 来代替
    db.collection.insertOne()       插入一条文档,3.2 版本之后新增了 
    db.collection.insertMany()      插入多条文档,3.2 版本之后新增了 
    update() 和 save()方法来更新集合中的文档
    db.collection.remove(<query>, <justOne>)         MongoDB 删除文档
    db.col.remove({})             删除所有数据,类似常规 SQL 的 truncate 命令
    db.col.find().pretty()       查询文档,以易读的方式来读取数据
    db.col.find({likes : {$gt : 100}})    大于操作符 - $gt
    db.COLLECTION_NAME.find().limit(NUMBER).skip(NUMBER)  limit方法,skip方法
    db.COLLECTION_NAME.find().sort({KEY:1})  
    db.collection.createIndex(keys, options) 创建索引
    db.COLLECTION_NAME.aggregate(AGGREGATE_OPERATION)  聚合(aggregate)主要用于处理数据(诸如统计平均值,求和等),并返回计算后的数据结果
    mongostat 和 mongotop    监控MongoDB的运行情况
    mongodump                 备份
    mongorestore              恢复
    explain() 和 hint()        查询分析常用函数
    db.runtest.find({post_text:/runoob/i})  正则 匹配post_text中包含runoob 的文档,i 不区分大小写
    
    
    
    
    
    
    use 数据库名 进入数据库 若数据库不存在,创建数据库
    
    db 显示当前数据库
    
    show dbs 显示内容非空的数据库
    
    db.createCollection('表名') 创建不限长度的表
    
    db.createCollection('表名' ,{capped:true,size:1000}) 创建限制长度的表
    
    db.表名.drop() 删除集合
    
    show collections 显示所有表
    
    db.表名.find() 查找表数据
    
    db.表名.find({列名:数据1}) 按条件查询
    
    db.表名.find({列名:数据1}).pretty() pretty() 将查带的结果格式话,更容易看清结构和内容
    
    db.表名.findOne({列名:数据1}) 按条件查询,只返回第一条
    
    db.表名.update({列名:数据1},{列名:数据2}) 查找到数据1 ,替换为数据2
    
    db.表名.update({列名:数据1},{$set:{列名:数据2}}) 查找到列为数据1的,替换所有数据1为数据2
    
    db.表名.remove({列名:数据1},{justOne:true}) 删除数据1的行,justOne为true时删除1条,为false时删除多条
    
    比较运算符 :
    
    小于 $lt 小于等于 lte大于gt 大于等于gte不等于ne
    
    逻辑运算符:
    
    or或并且可以直接逗号连接in 在。。。里
    
    排序: sort()
    
    db.表名.find().sort({字段:参数}) 参数为1 升序 参数为-1 降序
    
    分页 :limit()
    
    db.表名.find().limit(参数) 参数是获取的条数
    
    db.表名.find().skip(参数) 参数是跳过的条数
    
    db.表名.count({列名:数据1})统计数据的条数
    
    db.表名.find(列名:数据1).distinct('去重字段',{列名:数据2}) 除去重复
    
    备份数据库
    
    mongodump -h ip地址 -d 数据库名 -o存放位置
    
    恢复数据库
    
    mongorestore -h ip地址 -d 数据库名 -dir存放位置

    8.MongoDB 聚合

    >db.lxwdb.aggregate([{$group:{_id:"$title",num_count:{$sum:1}}}])
    { "_id" : "mongodb_test", "num_count" : 4 }
    { "_id" : "mongodb_test123", "num_count" : 1 }
    { "_id" : "update_mongodb", "num_count" : 1 }
    { "_id" : "MongoDB 教程", "num_count" : 2 }
    { "_id" : null, "num_count" : 1 }
    > db.lxwdb.find()
    { "_id" : ObjectId("613ef95fd1067f6f0d0d1aaa"), "name" : "newlxw" }
    { "_id" : ObjectId("613f0a50d1067f6f0d0d1aad"), "title" : "MongoDB 教程", "description" : "MongoDB 是一个 Nosql 数据库", "by" : "菜鸟教程", "url" : "http://www.runoob.com", "tags" : [ "
    mongodb", "database", "NoSQL" ], "likes" : 100 }
    { "_id" : ObjectId("613f0a56d1067f6f0d0d1aae"), "title" : "MongoDB 教程", "description" : "MongoDB 是一个 Nosql 数据库", "by" : "菜鸟教程", "url" : "http://www.runoob.com", "tags" : [ "
    mongodb", "database", "NoSQL" ], "likes" : 100 }
    { "_id" : ObjectId("613f0bb70c79827ceaac2d23"), "title" : "update_mongodb" }
    { "_id" : ObjectId("613f0f970c79827ceaac2d27"), "title" : "mongodb_test123" }
    { "_id" : ObjectId("613f0f960c79827ceaac2d26"), "title" : "mongodb_test", "age" : 4 }
    { "_id" : ObjectId("613f16540c79827ceaac2d28"), "title" : "mongodb_test", "age" : 4 }
    { "_id" : ObjectId("613f16ba0c79827ceaac2d29"), "title" : "mongodb_test", "age" : 4 }
    { "_id" : ObjectId("613f16dc0c79827ceaac2d2a"), "title" : "mongodb_test", "age" : 5 }

     db.lxwdb.aggregate([{$group:{_id:"$title",num_count:{$sum:1}}}])

    $group:分组统计

    _id: 作为id的字段,无法改动

    num_count: 统计这个分组的数目,自定义的,可以改动

    通过字段 title字段对数据进行分组,并计算 title字段相同值的总和。

    等同于: select title, count(*) from lxwdb group by title

     

    9.问题:Win PHP5.6 报错提示 Fatal error: Class 'MongoClient' not found

    网上搜索到的资料,仔细看才发现两个扩展名字是不一样的。
    PHP5.6需要 php_mongo.dll而不是php_mongodb.dll。下载 php_mongo.dll 安装即可。

    10.PHP 调用

    
    header("Content-Type: text/html; charset=utf-8");
    $m = new MongoClient(); // 连接默认主机和端口为:mongodb://localhost:27017
    $db = $m->lxwdb; // 选择数据库
    //$db->createCollection('runtest'); //创建集合
    $collection=$db->runtest; //选择集合
    $document=array(
    	"title" => "MongoDB",
    	"description" => "database",
    	"likes" => 100,
    	"url" => "http://www.runoob.com/mongodb/",
    	"by", "菜鸟教程"
    );
    //插入文档
    $res=$collection->insert($document);
    echo '数据插入成功';
    
    //查询文档
    $result=$collection->find();
    foreach ($result as $res){
    	d($res['title']);
    }
    
    //更新文档
    $collection->update(array("title"=>"MongoDB-11"),array('$set'=>array("title"=>"MongoDB-112")),array('multiple'=>true));
    $result=$collection->findOne();
    foreach ($result as $res){
    	d($res);
    }
    
    //删除文档
    $res=$collection->remove(array('0'=>false),array('justOne'=>false));
    $res=$collection->remove(array('title'=>'MongoDB 教程'),array('justOne'=>true));
    
    function d($data, $label='')
    {
    	$ajax = isset($_SERVER['HTTP_X_REQUESTED_WITH']) && ($_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest');
    
    	if(!$ajax) echo '<pre style="text-align: left;">';
    	if($label) echo $label.'--------------------------<br/>';
    	print_r($data);
    	if(!$ajax) echo '</pre>';
    }

    赞赏码

    非学,无以致疑;非问,无以广识

  • 相关阅读:
    VTK 空间几何变换(Transform),平移、旋转和缩放
    VTK 对象绘制 3D坐标轴(vtkCubeAxesActor)
    VTK 颜色映射之颜色插值
    VTK 模型的颜色映射
    VTK 如何不使用qvtkwidget,而直接把vtk出口嵌入qt窗口中
    VTK vtkRenderWindow 与vtkRenderWindowInteractor详解
    Qt 将界面程序封装成动态库DLL
    Qt 界面做成dll以便调用
    Qt 将带界面的程序封装成dll
    Qt 开发的界面程序封装成DLL,在VC中成功调用
  • 原文地址:https://www.cnblogs.com/lxwphp/p/15452461.html
Copyright © 2011-2022 走看看