• mongodb搭建和基本语法


    下载安装包

    https://fastdl.mongodb.org/win32/mongodb-win32-x86_64-2008plus-ssl-3.0.0-signed.msi?_ga=1.22066811.1599532380.1422017396

    安装及基本语法

    http://jingyan.baidu.com/article/ed15cb1b52b8661be2698162.html

    基本语法

    插入:

    for(i=3;i<100;i++) db.table.insert({x:i})

    查询:

    db.table.find().skip(3).limit(2).sort({x:1}) // 跳过前三条,查询两条数据,并按x的正序排序

    db.table,find().count() // 查询数据数量

    db.table.find({m:{$exists:true}}) // 查询存在m字段的数据,true存在,false不存在

    db.table.find({m:{$exists:true}}).hint("index_name") // 查询时强制使用索引

    更新:

    db.table.update({x:1},{x:999},true,true) // 第三个参数表示如果更新的数据不存在,则插入一条数据;更新时默认更新符合条件的第一条数据,第四个参数为true,则更新所有符合条件的数据

    db.table.update({z:100},{$set:{y:100}}) // 更新部分数据

    删除:

    db.table.remove({x:1}) // 默认删除所有符合条件的数据

    db.table.remove({}); // 删除集合中的所有数据

    db.table.drop() // 删除表中所有的数据,并把表删除

    db.dropDatabase() // 删除数据库

    索引:

    db.table.ensureIndex({x:1}) // 创建单键索引

    db.table.ensureIndex({x:1,y:-1}) // 创建复合索引,1和-1表示排序

    db.table.ensureIndex({x:1},{expireAfterSeconds:30}) // 创建过期索引,一段时间后插入的数据自动删除,expireAfterSeconds单位是秒

    过期索引的限制:

    1、存储在过期索引字段的值必须是指定的时间类型,ISODate或者ISODate数组,不能用时间戳(new Date())

    2、如果指定了ISODate数组,则按照最小的时间进行删除

    3、过期索引不能是复合索引

    4、删除时间不是精确的,删除过程是有后台程序每60s跑一次,而且上次也是需要一些时间

    db.table.getIndexes() // 查询索引

    db.table.dropIndex("index_name") // 删除索引,index_name是索引的名字

    db.table.ensureIndex({x:1},{name:"index_name"}) // 自定义索引的名字,如果没有第二个参数,mongo会给索引一个默认名字

    db.table.ensureIndex({x:1},{unique:true}) // 唯一索引,唯一性

    db.table.ensureIndex({x:1},{sparse:true}) // 稀疏索引,稀疏性,不必为不存在x字段的数据创建索引,如果强制使用索引查找不存在x的数据,则查不到数据

    全文索引

    db.table.ensureIndex({key1:"text",key2:"text"}) // 创建全文索引,value为text

    db.table.ensureIndex({"$**":"text"}) // 表示对集合中所有字段,创建全文索引

    db.table.find({$text:{$search:"coffee"}}) // 查找全文索引

    db.table.find({$test:{$search:"aa bb cc"}}) // 查找多个关键词,用空格分开,“或”查询,含有其中一个

    db.table.find({$test:{$search:""aa" "bb" "cc""}}) // 查找多个关键词,“与“查询,都包含,用引号把关键词包裹起来

    db.table.find({$test:{$search:"aa bb -cc"}}) // 查找多个关键词,但不包含cc

    db.table.find({$test:{$search:"aa bb"}}, {score:{$meta:"textScore"}}).sort({score:{$meta:"textScore"}}) // 查找相似度并排序,得分越高,越相似

    全文索引的限制:

    1、每次查询,只能指定一个$text查询

    2、$text查询不能出现在$nor查询中

    3、查询中如果包含了$text,hint不再起作用

    4、mongoDB全文索引还不支持中文

    地址位置索引:

    2D索引:平面地址位置索引

    db.table.ensureIndex({w:"2d"}) // 值是2d

    db.table.insert({w:[经度,纬度]})

    db.table.find({w:{$near:[1,1],$maxDistance:10}}) // 10个点范围内,查询距离某个点最近的点

    db.table.find({w:{$geowithin:{$box:[[0,0],[3,3]]}}}) // 查询某个形状内的点

    1、$body:矩形

    {$body:[[x1,y1],[x2,y2]]} // 左边界和右边界

    2、$center:圆形

    {$center:[[x1,y1],r]} // 圆心位置和半径

    3、$polygon:多边形

    {$polygon:[[x1,y1],[x2,y2],[x3,y3],……]}

    2Dsphere索引:球面地理位置索引

    db.table.ensureIndex({w:"2dsphere"})

    GeoJSON:描述一个点,一条直线,多边形等形状

    格式:{type:"",coordinates:[<coordinates>]}

    geoNear查询:

    db.runCommand({geoNear:<collection>,near:[x,y],minDistance:(对2d索引无效),maxDistance:10,num:2(查询个数)})

    备份策略

    命令行备份:mongodump/mongorestore   mongodump将mongodb的数据导出至BSON文件,mongorestore将BSON文件的数据导入到mongodb中

    文件系统备份

    Backup服务

    MongoDB中条件操作符有:

    • (>) 大于 - $gt
    • (<) 小于 - $lt
    • (>=) 大于等于 - $gte
    • (<= ) 小于等于 - $lte
      db.table.find({age : {$lt :24, $gt : 17}})
  • 相关阅读:
    BTree B+Tree
    SpringMvc框架 解决在RESTFUL接口后加任意 “.xxx” 绕过权限的问题
    多线程基础知识---sleep和wait区别
    多线程基础知识---join方法
    Maven跳过单元测试的两种方式
    maven发布项目到私服-snapshot快照库和release发布库的区别和作用及maven常用命令
    Maven项目版本继承 – 我必须指定父版本?
    SpringMVC 零配置 无web.xml
    利用ApplicationContextAware装配Bean
    Spring Boot 读取 resource 下文件
  • 原文地址:https://www.cnblogs.com/liuwei9002/p/4961226.html
Copyright © 2020-2023  润新知