zoukankan      html  css  js  c++  java
  • MongoDB简易

    一   安装

    1.下载

    $ brew install mongodb

    2.启动

     $ mongod --config /usr/local/etc/mongod.conf

    3.连接

     $ mongo  

    二   语法

    show dbs  查看所有数据库

    db.createCollection('col') 创建col集合

    use DBNAME  创建并切换至某某数据库

    db.dropDatabase()  删除当前数据库

    db.collection.drop()   删除集合

    show  tables   查看所有集合

    db.Collection_Name.insert(document)  插入文档

    db.Collection_Name.find()   查看文档

    db.Collection_Name.update(<query>,<update>,{upsert:false   是否插入不存在的数据,multi:false  只更新查到的第一个数据    writeConcern:抛出异常的级别}

    db.collection.save(<document>,{writeConcern:级别}  save() 方法通过传入的文档来替换已有的文档

    db.collection.remove(<query>,{justOne:true   只删除一个文档}

    db.collection.find().pretty()  查询集合中的数据

    db.col.find({"likes":{$lt:50}}).pretty()   小于

    db.col.find({"likes":{$lte:50}}).pretty()   小于等于

    db.col.find({"likes":{$gt:50}}).pretty()   大于

    db.col.find({"like":{$gte:50}}}.pretty()   大于等于

    db.col.find({"likes":{$ne:50}}).pretty()   不等于

    AND条件  db.col.find({key1:value1,key2:value2}).pretty()

    OR条件   db.col.find({$or:[{key1:value1}, {key2:value2}]}).pretty()

    AND  OR 组合  db.col.find({"likes":{$gt:50},$or:[{"by":"菜鸟教程"},{"title":"MongoDB 教程"}]}).pretty()

    db.col.find({"title":{$type:2}})   $type条件操作符 Double  1; String 2; Object 3;Array 4;Binary data 5; Undefined 6;Object id 7; Boolean 8; Date 9;Null 10; Regular Expression 11; Javascript 13; Symbol 14; Timestamp 17;

    db.collection.find().limit(NUMBER)  读取指定数量的数据记录

    db.col.find({},{"title":1,_id:0}).limit(1).skip(1)  跳过指定的条数,最先执行顺序 sort再skip再limit

    db.col.find({},{"title":1,_id:0}).sort({"likes":-1})  1正序;-1倒序

    索引  ensureIndex()

    db.COLLECTION_NAME.ensureIndex({KEY:1},option)  1为升序创建索引  -1为降序创建索引    option可选参数{background:false  防止创建索引会阻塞其他数据库操作,将其指定为true;.......}

    db.col.ensureIndex({"title":1,"description":-1})  可以设置多个索引   

    db.values.ensureIndex({open:1,close:1},{background:true})

    聚合aggregate()方法用于处理数据,并返回计算后的结果

    db.COLLECTION_NAME.aggregate(AGGREGATE_OPERATION)

    db.mycol.aggregate([{$group:{_id:"$by_user",num_tutorial:{$sum:"$likes"}}}])

    $sum  计算总和; $avg 计算平均值;$min 获取集合中所有文档对应的最小值; $max 最大值; $push 在结果文档中插入值 到 一个数组中;$addToSet 在结果文档中插入值到一个数组中,但不创建副本;$first  根据资源文档的排序获取第一个文档数据;$last  最后一个文档数据;

    管道 将在一个管道处理完的结果 传递给下一个管道处理;表达式:处理输入文档并输出。表达式是无状态的,只能用于计算当前聚合管道的文档:

    $project 修改输入文档的结构;$match 用于过滤数据;$limit 限制聚合管道返回的文档数;$skip  跳过指定文档的数量;$unwind 将文档中的某一个数组类型字段拆分成多条,每条包含数组中的一个值。$group:将集合中的文档分组,可用于统计结果;$sort:排序;$geoNear:输出接近某一地理位置的有序文档。

    分片:存在的另一种集群,可以满足MongoDB数据量大量增长的需求。

    备份:mongodump -h dbhost -d dbname -o dbdirectory

    恢复数据:mongorestore -h <hostname><:port> -d  dbname <path>

    监控:/bin   $mongostat

                       $mongotop

    关系类型:嵌入式关系--保存在单一的文档中,比较容易获取和维护数据,但不断增大会影响读写性能。

                      引用式关系--把数据文档和用户文档分开,通过文档的ID字段来建立关系。{"name":"Tom Benzamin","address_ids":[ObjectId("52ffc4a5d85242602e000000"),ObjectId("52ffc4a5d85242602e000001")]}

    使用DBRefs:一个文档冲多个集合中引用文档。{$ref:.集合名称. ,$id: ..引用ID..,$db:.数据库名称..}

    原子操作:MongoDB提供了许多原子操作,比如文档的保存、修改、删除。(原子操作:要么这个文档保存到mongoDB,要么没有保存到MongoDB,不会出现查询到的文档没有保存完整的情况)

    ObjectID 是一个12字节BSON类型数据,前4个字节表示时间戳,3个字节是机器标识码,2个是进程ID,最后3个字节是随机数

    newObjectId = ObjectId()

    new ObjectId().str

    正则表达式post_text

    db.posts.find({post_text:{$regex:"runoob"}})  或db.posts.find({post_text:/runoob/}) 或 db.posts.find({post_text:{$regex:"runoob",$options:"$i"}})

  • 相关阅读:
    Typora集成免费图床:PicGo + Gitee
    Github shields徽章配置方法介绍
    Python爬虫的简易流程
    MVC学习系列——Filter扩展
    MVC学习系列——ActionResult扩展
    JQuery插件,傻傻分不清!
    闲谈前端编码解码、C#编码解码。
    年终总结和职业规划
    MVC学习系列——记一次失败面试后,感想。
    C/C++四种退出线程的方法
  • 原文地址:https://www.cnblogs.com/yxiaoqian/p/7753717.html
Copyright © 2011-2022 走看看