mongodb权威指南笔记

本文深入探讨了MongoDB的基本安装、客户端使用、文档创建、更新、删除等操作,以及如何进行条件范围查询、指针遍历等高级查询技巧。同时介绍了数据存储优化、GridFS文件存储机制以及数据库事务模拟等功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、基本介绍
    1、mongo安装,下载直接解压,然后直接运行bin/mongod
    2、客户端的的介绍
    mongoDB shell 是一个javascript解释器
    可以数学运算,可用掉标准的javascript库,可定义javascript函数
    3、object id
    0 1 2 3 | 4 5 6 | 7 8 | 9 10 11
    Timestamp | Machine | PID | Increment

二、Creating,Updating and Deleting Documents
    1、插入
    批量插入:只产生一个tcp连接,只能用于应用程序接口
    导入:mysql->mongo mongoimport单独命令行工具
    2、删除
    remove 指定条件,删除所有
    drop 清除整个collection 然后需要重建索引
    3、update
    有两个参数,条件,一个修饰符
    修饰符:更新指定字段,比如更新是个数组,
    用到的修饰符:$set,$inc,$unset,$push,$pop
    $addToSet防止插入重复的值
    更新多条。。。。multiple
    4、Upsert (在shell 里是作为一个单独方法)
    如果不存在匹配就插入
    在php 里 MongoCollection::update的一个选项属性设置的
    ** getLastError
    5、总结
    三个操作(insert,update,remove)看起来都是瞬发的,因为它们不会等待服务器的响应,这并不是异步
    fire-and-forget(离弦的箭)
    mongoDB 也是有个队列的,为每一个连接
    因为每个连接都是一个队列,这样就有个问题,一个shell大量插入,令一个查询,可能是查询不到的
    Mongo 保证性能就会为,每个驱动打开多个连接,为了更快的操作,但是他们内部会保证一系列请求为一个连接处理

三、find
    1、指定条件范围查询
    也是两个参数,第一个作为条件,第二个可以返回指定的字段(返回数减少,减少带宽,提高了查询速度)
    $lt, $lte, $gt, $gte$in, $nin, $not
    查询特殊的字段null,数组
    $where 允许你在查询里执行arbitary javascript,使你几乎可以在查询中做任何事情
    查询比较慢(BOSN转换成js对象),不能使用索引
    2、指针,遍历
    foreach
    cursor.hasNext()
    shell就立刻取到了前100条结果或者前4MB的结果
    问题:程序获取前100个document并处理它们,然后将它们存储回数据库,如果一个document没有足够的空间来容纳新的document,会重新定位到collection的尾部
    添加“$snapshot"选项,查询就会按照collection未被改变的视图运行

三、other
    timeout, immortal
    1、插入的数据不是直接写到硬盘,所有操作都记录到日志里,然后在由mongo后台多线程写到硬盘,60分钟申请空间,用已经申请出来的空间,提高速度,如果超过了预期,就放到最后插入的时候不再需要分配空间,服务器就不用查询空闲列表
    2、GridFS是mongoDB里的存储二进制大文件的机制
    3、db.eval 可以用来模拟事务,db.eval会锁定数据库,执行javascript,然后解锁数据库。
    虽然没有回滚,这也能够让你保证一组操作是按顺序执行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值