mongodb

JerryXia 发表于 , 阅读 (26)
# install# follow the `PHP tutorial`pecl install mongodb # take care, use 'mongodb', not 'mongo'composer require mongodb/mongodb# new$mongoDbClient = new MongoDbClient();$mongoDbClient->connect()->selectDataBase("xxx")->selectCollection("xxx");# search$collection = $mongoDbClient->getCollection(); // 使用 mongodb 官方 PHP library 中的方法$collection->find();$mongoDbClient->find(); // MongoDbClient.php 封装的方法$mongoDbClient->findById();# search condition$where = [];$where['status'] = 'checked'; // 相等if ($search['query_start_time']) {    $where['created_time']['$gte'] = $search['query_start_time'] . ' 00:00:00'; // 条件操作符}# count$totalRow = $collection->count($where);# limit$data = $collection->find($where, [    'limit' => 10,    'skip'  => ($page - 1) * 10,]);

其实用 mongo 做简单查询和分页,还是蛮爽的

MongoDB 基础教程

实验楼 - 学习路径 - mongodb 工程师

基本概念:

  • db 数据库:类似 mysql 中的 db
  • document 文档:类似 mysql 中的 row(行),使用一种类 json 的 bson 存储数据
  • document relation 文档关联:include 包含、point 引用
  • collection 集合:类似 mysql 中的 table(表),文档的聚合
  • metadata 元数据:类似 mysql 中的 mysql、sys、information_schema 等数据库存储的信息(当然没有那么大的信息量)
  • aggregate 聚合:类似 mysql 中的 group by

    基本语法:

    • 链式调用 db.users.find().pretty().sort().limint().skip()
    • 条件操作符 1:$or $gt
    • 条件操作符 2:$type,指定数据类型
    • 原子操作:$set $unset,更新指定 key
# use docker to test and practice mongodocker run --name some-mongo -d mongo:3.4docker exec -ti some-mongo bash# connectmongo # 连接到 mongodbexit / Ctrl-d # 退出# dbshow dbsuse local # create if not existsdb # show the current dbdb.dropDatabase() # 'db' reference the current db# collectionshow collectionsdb.createCollection('users')db.users.drop()# documentdb.users.insert() / db.users.save() # create collection 'users' if not existsdb.users.update()db.users.remove()# finddb.users.find().pretty().sort().limint().skip()# AND $or# $gt $lt# $type# indexdb.users.ensureIndex({"name":1})# aggregatedb.users.aggregate([{$group:{_id:"$name", user:{$sum:"$user_id"}}}])db.users.aggregate([{$match:{user_id:{$gt:0,$lte:2}}},{$group:{_id:"user",count:{$sum:1}}}]) // aggreagte with pipe# 原子操作# 查询分析db.users.find({gender:"M"},{user_name:1,_id:0}).explain()db.users.find({gender:"M"},{user_name:1,_id:0}).hint({gender:1,user_name:1}).explain() // hint() force to use the input as index

mongoDB入门篇

慕课网 SeanZ http://www.imooc.com/learn/295

相关概念: nosql, 索引, 集合, 复制集, 分片, 数据均衡
部署: 简单的单机服务 -> 具有冗余容错功能的复制集 -> 搭建大规模数据集群 -> 集群的自动部署
使用: 最基本的文档增删改查, 不同类型的索引创建与使用, 复杂的聚合查询, 对数据集合分片并在不同分片间维持数据均衡, 数据备份与恢复, 数据迁移
运维: 集群部署; 常见故障: 单点失效如何恢复工作, 数据库意外杀死如何进行数据恢复, 数据发送拒绝服务时, 如何排查原因, 磁盘快满时如何处理

入门教程

mongodb 官方文档
菜鸟教程 - mongodb 教程
易百教程 - mongodb 教程