zoukankan      html  css  js  c++  java
  • MongoDB_1

         突然想去看下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})

      匹配查询:

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

     

     
     
     
  • 相关阅读:
    第三章节 BJROBOT 角速度校正 【ROS全开源阿克曼转向智能网联无人驾驶车】
    第二章节 BJROBOT IMU 自动校正 【ROS全开源阿克曼转向智能网联无人驾驶车】
    【扩展】链式编程初识
    【扩展】随机数
    一、.Net基础【1.5】封装MessageBox
    一、.Net基础【1.4】不引入第三变量,交换两个变量的值
    一、.Net基础【1.3】AndAlso & OrElse Operators in C#短路运算符
    一、.Net基础【1.2】变量和数据类型
    一、.Net基础【1.0】入门
    ArcGIS Desktop 10.X 复习与提高【1.1】ArcGIS数据格式的介绍 Esri
  • 原文地址:https://www.cnblogs.com/mfkaudx/p/3574004.html
Copyright © 2011-2022 走看看