MongoDB操作命令

Mongo简介

属于非关系型数据库,是分布式文档数据库。
特点:扩展灵活、结构灵活、使用方便、支持查询、索引。
不足:缺乏事务控制,无法保障数据完整性。

oracle存储结构

mongodb存储结构

Mongo命令

  1. 库命令

    • 查看

      show dbs
    • 使用

      use 库名称
    • 创建

      use 库名称  //库存在就是使用;不存在就创建再使用
    • 删除

      db.dropDatabase() //删除当前use的库
  2. 集合

    • 查看

      show collections
    • 创建

      当使用"db.集合名.insert()"插入数据时,集合不存在时会自动创建
    • 删除

      db.集合名.drop()
  3. 数据操作

    • 插入

      插入单条记录

      db.dept.insert({"no":1,"dname":"beijing"})

      插入多条记录

      var objs = [{"no":3,"dname":"chengdu"},{"no":4,"dname":"shenyang"}];
      db.dept.insert(objs)

      for(var i=1;i<10;i++){
       db.dept.insert({"no":10+i,"dname":"bj"+i});
      }
    • 删除

      删除单条记录

      db.dept.remove({"no":1})

      删除所有记录

      db.dept.remove({})
    • 修改

      全部更新覆盖

      db.dept.update({"no":1},{"dname":"shanghai"})

      部分更新

      db.dept.update(条件json对象,{$set:要更新的json对象})
      //示例
      db.dept.update({"no":1},{$set:{"dname":"chengdu"}})
    • 查询

      $gt、$lt、$gte、$lte、$ne等

      查询所有记录

      db.dept.find()

      查询某条记录,no=1的记录

      db.dept.find({"no":1})

      查询条件记录,no>1的记录

      db.dept.find({"no":{$gt:1}})
      db.dept.find({"no":{$gte:1}})

      排序

      db.dept.find().sort({"no":1})

      1表示升序、-1表示降序

      分页

      //跳过begin条,然后抓取记录
      db.dept.find().skip(begin).limit(记录数)
    • 统计

      统计所有记录数量

      db.dept.count()

      统计满足条件记录数

      db.dept.count({"no":11})
      db.dept.count({"no":{$gt:10}})

Java访问MongoDB

驱动包:mongo-java-driver-2.13.2.jar
  1. 原生方式

    • 引入mongo-java-driver-2.13.2.jar驱动包

    • 建立连接

      MongoClient mongo = new MongoClient("localhost");
      //操作
      mongo.close();关闭连接
    • 获取库和集合信息

      MongoClient mongo = new MongoClient("localhost");
      List<String> dbs = mongo.getDatabaseNames();//show dbs 查看所有库名
      DB db = mongo.getDB("java11");//use java11 获取库对象
      //db.getCollectionNames();//show collections 查看集合名
    • 插入记录

      MongoClient mongo = new MongoClient("localhost");
      DB db = mongo.getDB("java11");
      DBCollection dept = db.getCollection("dept");
      DBObject arr = new BasicDBObject();
      arr.put("no", 10);
      arr.put("dname", "beijing1");
      dept.insert(arr);//db.dept.insert({"no":10,"dname":"beijing1"})
      mongo.close();
    • 更新记录

      MongoClient mongo = new MongoClient("localhost");
      DB db = mongo.getDB("java11");
      DBCollection dept = db.getCollection("dept");
      DBObject q = new BasicDBObject();
      q.put("no", 10);
      
      DBObject o = new BasicDBObject();
      DBObject n = new BasicDBObject();
      n.put("dname", "北京");
      o.put("$set", n);
      //db.dept.update({"no":10},{$set:{"dname":"北京"}})
      dept.update(q, o);
      mongo.close();
    • 查询记录

      MongoClient mongo = new MongoClient("localhost");
      DB db = mongo.getDB("java11");//use java11 获取库对象
      DBCollection dept = db.getCollection("dept");//获取dept集合对象
      DBCursor cursor = dept.find();//db.dept.find() 查询所有记录
      while(cursor.hasNext()){
          DBObject obj = cursor.next();
          Object no = obj.get("no");
          Object dname = obj.get("dname");
          System.out.println("no="+no+" dname="+dname);
      }
      mongo.close();
  2. spring-data-mongodb方式(Spring框架)

    利用MongoTemplate对象进行MongoDB操作。

- 导入下列jar包,注意版本匹配,容易产生冲突。

    - mongo-java-driver-2.13.2.jar
    - spring-data-mongodb-1.4.2.RELEASE.jar
    - spring-data-commons-1.7.2.RELEASE.jar
    - slf4j-api-1.5.8.jar
    - slf4j-log4j12-1.5.8.jar
    - log4j-1.2.12.jar

- 追加Spring配置,创建MongoTemplate对象

        <!-- 追加mongo命名空间,定义Factory -->
        <mongo:db-factory id="mongoFactory" 
            host="localhost" port="27017" dbname="java11"/>

        <!-- 创建MongoTemplate -->
        <bean id="mongoTemplate" 
            class="org.springframework.data.mongodb.core.MongoTemplate">
            <constructor-arg index="0" ref="mongoFactory">
            </constructor-arg>
        </bean>

- 测试Template应用

        @RunWith(SpringJUnit4ClassRunner.class)
        @ContextConfiguration(locations={"classpath:spring-mongo.xml"})
        public class TestMongoTemplate {

            @Resource
            private MongoTemplate mongoTemplate;

            @Test//测试添加
            public void test1(){
                System.out.println(mongoTemplate);
                User user = new User();
                user.setId(20);
                user.setName("tiger");
                user.setPassword("123456");
                mongoTemplate.save(user);//默认集合名user
            }

            @Test//测试查询所有记录
            public void test2(){
                List<User> list = mongoTemplate.findAll(User.class);//默认查user集合
                for(User user:list){
                    System.out.println(user.getId()+" "+user.getName()+" "+user.getPassword());
                }
            }

            @Test//测试按条件查询记录
            public void test3(){
                Query query = new Query(Criteria.where("id").is(10));
                User user = mongoTemplate.findOne(
                    query,User.class);
                System.out.println(user.getId()+" "+user.getName()+" "+user.getPassword());

            }

        }


10月      数据库

本博客所有文章除特别声明外,均采用 CC BY-SA 3.0协议 。转载请注明出处!