MongoDB

MongoDB link

基本知识

  • db.createCollection(“runoob”)
  • db.collection.drop()
  • db.mycol2.insert({“name” : “菜鸟教程”}) 自动创建
  • insert() insertMany() 主键已经存在Exception
  • db.col.update({‘title’:‘MongoDB 教程’},{$set:{‘title’:‘MongoDB’}},{multi:true})
  • $type 过滤字段类型
  • db.col.remove({‘title’:‘MongoDB 教程’})
  • db.collection.find(query, projection)
  • db.col.find({“likes”:{$lt:50}}).pretty()
  • db.col.find({key1:value1, key2:value2}).pretty() and条件
  • db.col.find({$or:[{“by”:“菜鸟教程”},{“title”: “MongoDB 教程”}]}).pretty() or条件
  • Skip() Limit() 分页
  • sort() 1升-1降
  • db.values.createIndex({open: 1, close: 1}, {background: true}) 1升-1降
  • db.mycol.aggregate([{KaTeX parse error: Expected '}', got 'EOF' at end of input: …roup : {_id : "by_user", num_tutorial : {$sum : 1}}}]) 聚合group by count(*)
  • 主从复制
  • 分片
  • mongodump -h dbhost -d dbname -o dbdirectory 备份
  • mongorestore -h <:port> -d dbname 恢复
  • 单字段索引,混合索引不支持

高级

  • MongoDB 关系
    • 嵌入式关系
    • 引用式关系
      • 手动引用
      • DBRefs
        • $ref:集合名称
        • $id:引用的id
        • $db:数据库名称 可选参数
  • 不支持事务
    • 原子操作 保存 修改 删除等
  • ObjectId
    • MongoDB中存储的文档必须有一个"_id"键
    • ObjectId 是一个12字节 BSON 类型数据
    • 不需要为你的文档保存时间戳字段 ObjectId(“5349b4ddd2781d08c09890f4”).getTimestamp()可以返回时间
  • Map Reduce
    将大批量的工作(数据)分解(MAP)执行,然后再将结果合并成最终结果(REDUCE)
  • 全文检索
    全文检索对每一个词建立一个索引,指明该词在文章中出现的次数和位置,当用户查询时,检索程序就根据事先建立的索引进行查找,并将查找的结果反馈给用户的检索方式
    • 全文索引
  • 正则表达式
  • GridFS(如:图片、音频、视频等)
  • 固定集合(如:图片、音频、视频等)
    像一个环形队列,当集合空间用完后,再插入的元素就会覆盖最初始的头部的元素

索引

  • 高级索引
    • 索引数组字段 db.users.ensureIndex({“tags”:1}) 会自动为数组中字段建立单独的索引
    • 索引子文档字段 手动建立多个索引 db.users.ensureIndex({“address.city”:1,“address.state”:1,“address.pincode”:1}) 查询表达不一定遵循指定的索引的顺序,mongodb 会自动优化
  • 内存(RAM)
    • 由于索引是存储在内存(RAM)中,你应该确保该索引的大小不超过内存的限制
    • 如果索引的大小大于内存的限制,MongoDB会删除一些索引,这将导致性能下降
  • 查询限制
    • 正则表达式及非操作符,如 $nin, $not, 等
    • 算术运算符,如 $mod, 等
    • $where 子句
  • 索引键限制
    • 如果现有的索引字段的值超过索引键的限制,MongoDB中不会创建索引
  • 覆盖索引查询
  • 查询分析
    • db.users.find({gender:“M”},{user_name:1,_id:0}).explain()
    • explain()
    • hint()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值