突然想去看下MongoDB的东西,于是有了这篇文章。其实很早以前就看过一些关于NoSql的文章,还记得当时里面有介绍MongoDB的,多瞅了2眼,并且在Window下安装了MongoDB的驱动,小玩了会。今天重新翻出来,没成想在命令行下竟然没有能成功连接到MongoDB。一顿Baidu后发现了问题,原来是上次非正常退出MongoDB导致的问题,照猫画虎,解决了问题:贴这里以备不时之需,

1、删除%MONGO_HOME%/db下的.lock文件 
2、输入命令 mongod --repair 
3、重启mongoDB
 
这里只对MongoDB的使用做一些简单记录,环境配置什么的,请参考:MongoDB配置安装

客户端连接mongodb

在client的shell里,执行mongo.exe

如何正常退出mongodb

在client的shell里,use admin,执行db.shutdownServer()即可!

创建表

db.createCollection('zylTest')

插入记录

  单条记录:

  db.zylTest.insert({"name":"zhoujy"})

  多条记录

  db.zylTest.insert([{"a":1,"b":2},{"a":2,"b":3},{"a":3,"b":4}])

插入记录将按照Json结构来定义,若多条记录的格式不相同,mongodb会自行做出处理

删除记录

单条删除:db.zylTest.remove({"name":"zhoujy"})

全部删除:db.zylTest.remove()

更新记录:

  $【inc】用于int类型的列加减操作

  这个部分比较麻烦:我们先来看【$inc】这个操作,【$inc】 用于int类型的key(列)加减操作,要是指定的要更新的key不存在,则会新增该key(列):以下面的操作为例:

如上图所示在之前的结构中并不包含【pv】这一列,若第一次执行下面的操作,数据库结构将发生响应的变化

db.zylTest.update({"name":"zhoujy"},{"$inc":{"pv":1}})

多次执行,列Pv的值将按输入数值相加

相关命令行:

  只更新第一条出现的记录,+1

  db. zylTest.update({"name":"a"},{"$inc":{"pv":1}})

  更新所有符合条件的记录,+1;(第4个参数是true)

  db. zylTest.update({"name":"a"},{"$inc":{"pv":1}},false,true)

  要是更新条件找不到记录,默认是不执行;要是第3个参数是true,则会新增一条记录,包含完整的数据结构

  db. zylTest.update({"name":"a"},{"$inc":{"pv":1}},false,true)

  总之上面的查询相当于SQL中的

  update zylTest set pv=pv+1 where name =' zhoujy'

$【set】用于更新指定列

$set 用于更新指定key(列),要是指定的要更新的key不存在,则会新增该key(列):

相关命令行:

  只更新第一条出现的记录

  db. zylTest.update({"a":1},{"$set":{"b":"A"}})

  更新所有符合条件的记录(第4个参数是true),若没有符合条件的记录则不执行任何操作,当第三个参数为true的时候,若找不到符合条件的记录则会新增一条记录.

  db. zylTest.update({"a ":-1},{"$set":{" b ":"A"}},false,true)

  update zylTest set b=’A’ where a ='1

$【unset】 用于删除指定的列

  删除第一条b为2的记录的列A

  db.zylTest.update({"b":2},{"$unset":{"a":1}})

  删除复合条件的记录的列A,第3个参数没有意义

  db.zylTest.update({"b":"2"},{"$unset":{"a":1}},true,true)

  删除所有记录的列A

  db.zylTest.update({},{"$unset":{"a":1}},false,true)

 

其余更新操作暂时省略

查询

  返回所有记录

  db.zylTest.find()

  条件查询

  db.zylTest.find({"a":1})

  db.zylTest.find({"a":1,"b":2})

  In or not in

  db.zylTest.find({"a":{"$in":[1,3,5,8]}})

  db.zylTest.find({"a":{"$nin":[1,3,5,8]}})

  Or查询

  db.zylTest.find({"$or":[{"a":1},{"b":"2"}]})

  db.zylTest.find({"$or":[{"a":{"$in":[1,2,3]}},{"b":"3"}]})

  不等条件查询:

  $lt(<);$lte(<=);$gt(>);$gte(>=);$ne(<>)

  db.zylTest.find({"a":{"$gt":1,"$lte":5}})

  db.zylTest.find({"a":{"$gt":1,"$lte":5,"$ne":3}})

  限制查询:

  db.zylTest.find({"a":{"$in":[1,3,5,8]}}).limit(1)

  排序:

  db.zylTest.find({"b":2}).sort({"a":-1})

  匹配查询:

  这块没有看明白,后面再补充吧

 
 

MongoDB_1的更多相关文章

  1. Hadoop 之Mong DB 之CentOS 6 使用 yum 安装MongoDB及服务器端配置

    安装MongoDB的方法有很多种,可以源代码安装,在Centos也可以用yum源安装的方法.由于MongoDB更新得比较快,我比较喜欢用yum源安装的方法.64位Centos下的安装步骤如下: 1.准 ...

  2. CentOS 6 使用 yum 安装MongoDB及服务器端配置

    安装MongoDB的方法有很多种,可以源代码安装,在Centos也可以用yum源安装的方法.由于MongoDB更新得比较快,我比较喜欢用yum源安装的方法.64位Centos下的安装步骤如下: 1.准 ...

  3. Linux CentOS 6.5 yum安装MongoDB的操作

    安装MongoDB的方法有很多种,可以源代码安装,在CentOS也可以用yum源安装的方法.由于MongoDB更新得比较快,我比较喜欢用yum源安装的方法.64位CentOS下的安装步骤如下: 1.准 ...

  4. MongoDB 安装,启动与基本使用

    一.MongoDB简介 MongoDB是一个高性能,开源,无模式的文档型数据库,是当前NoSql数据库中比较热门的一种.它在许多场景下可用于替代传统的关系型数据库或键/值存储方式.Mongo使用C++ ...

  5. mtools-你可能没用过的mongodb神器

    前言 接触 mongodb 已经有一段时间了,从一开始的不了解,到现在已慢慢适应这个nosql领域的佼佼者,还是经历了不少波折. 在进行数据库选型的时候,许多人总是喜欢拿 mongodb和mysql. ...

  6. MongDB篇,第四章:数据库知识4

    MongDB 数据库知识4 GridFS 大文件存储 文件的数据库存储 1,在数据库中以   字符串的方式  存储文件在本地的路径: 优点: 节省数据库空间 缺点: 当数据库或者文件位置发生变化时则无 ...

  7. 在CentOS中使用 yum 安装MongoDB及服务器端配置

    转自 http://blog.csdn.net/zhangfeng19880710/article/details/20166853 一.准备工作: 运行yum命令查看MongoDB的包信息 [roo ...

  8. user_mongo_in_a_docker_and_dump_database

    使用 mongo docker 镜像 使用 mongo 镜像是很方便的,直接使用官方镜像就好了,为了今后更方便使用,这里给出依据 restheart-docker 中的 docker-compose. ...

  9. nosql_action

    ps -aux  查当前端口占用 connecting to: test > show dbs local .078125GB testphp .203125GB > use testph ...

随机推荐

  1. Android 进入另外一个窗体的两种方法

    方法一: Intent intent = new Intent(); intent.setClassName(this, "com.wuyou.twoactivity.OtherActivi ...

  2. window下的php安装redis扩展

    本实验建立在redis服务器已经安装成功的条件下.安装redis扩展需要以下步骤: 1.打开php.ini文件,并找到该段代码:extension=php_redis.dll,并去掉前面的#好,如果没 ...

  3. java中的信号量Semaphore

    Semaphore(信号量)充当了操作系统概念下的“信号量”.它提供了“临界区中可用资源信号量”的相同功能.以一个停车场运作为例.为了简单起见,假设停车场只有三个车位,一开始三个车位都是空的.这时如果 ...

  4. linux下常用网络操作汇总

    首先说明下RHEL6下设置IP地址的确和RHEL5下有几点是不同的. 我装完RHEL6中默认选择的是DHCP自动获取方式: [root@localhost ~]# vi /etc/sysconfig/ ...

  5. PHP,JAVA,JAVASCRIPT的正则表达式里的反斜杠\的不通之处

    我的博客:www.while0.com 首先,java和javascript强制字符串输出\必须用\转义,所以要输出一个\,java和javascript都要两个\: java代码: String s ...

  6. Duplex Service in WCF(CodeProject上的)

    Duplex Service in WCF In WCF, a service can call back to its clients. That is to say that, at the ti ...

  7. Linux下高效编写Shell——shell特殊字符汇总

    Linux下无论如何都是要用到shell命令的,在Shell的实际使用中,有编程经验的很容易上手,但稍微有难度的是shell里面的那些个符号,各种特殊的符号在我们编写Shell脚本的时候如果能够用的好 ...

  8. scrollView的用法

    - (void)viewDidLoad {     [super viewDidLoad];           scrollView = [[UIScrollView alloc] initWith ...

  9. HDOJ 1013题Digital Roots 大数,9余数定理

    Problem Description The digital root of a positive integer is found by summing the digits of the int ...

  10. 青蛙的约会 - poj 1061(扩展欧几里得)

    分析:这个东西在数论里面应该叫做不定方程式,可以搜一下,有很精彩的证明,先求出来方程式的一组特解,然后用这组特解来求通解,但是求出来特解之后怎么求这些解里面的最小非负x值?我们知道 x = x0 + ...