• mongodb实验


     

    课堂实验:MangoDB操作

    实验目的

    掌握MongoDB各项查询命令

    实验原理

    面向文档的NoSQL数据库主要解决的问题不是高性能的并发读写,而是保证海量数据存储的同时,具有良好的查询性能。

    MongoDB最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。

    由于MongoDB可以支持复杂的数据结构,而且带有强大的数据查询功能,因此很多项目都考虑用MongoDB来代替MySQL等传统数据库来实现不是特别复杂的Web应用。由于数据量实在太大,所以迁移到了MongoDB上面,数据查询的速度得到了非常显著的提升。

    实验环境

    Linux Ubuntu 14.04

    jdk-7u75-linux-x64

    mongodb-linux-x86_64-3.4.2.tgz

    实验内容

    1.使用find或者findOne函数和查询文档

    2.MongoDB 条件查询

    3.MongoDB AND和OR查询

    4.MongoDB $type 操作符

    5.MongoDB 正则表达式

    实验步骤

    1.启动MongoDB shell。

        numactl --interleave=all mongod -config /apps/mongodb/bin/mongodb.conf  
          
        mongo  
    

    2.切换到admin数据库,使用root账户。

        db.auth('root','strongs')  
    

    3.插入实验数据。

    db.mycollection.insert({'username':'zhangyu','age':13,'salary':500});  
    
    db.mycollection.insert({'username':'zhangyu','age':13,'salary':500});  
    
    db.mycollection.insert({'username':'laohu','age':20,'salary':200});  
    
    db.mycollection.insert({'username':'banma','age':13,'salary':300});  
    
    db.mycollection.insert({'username':'xiongmao','age':8,'salary':300}); 
    

    4.统计集合中数据条数。

    db.mycollection.count()  
    

    5.MongoDB中使用find来进行查询,查询就是返回一个集合中的子集,子集的范围从0到整个集合。find的第一个参数决定了要返回哪些子集,其形式也是一个集合。

    空的文档查询会匹配集合的全部内容,要是不指定查询文档,默认就是{}。

    db.mycollection.find()  
    

    6.查询第一条数据。

    db.mycollection.findOne()  
    

    注意,findOne中的O要大写。

    7.查询第1条以后的所有数据。

    db.mycollection.find().skip(1)  
    

    8.跳过第2条,查询后两条数据。

    db.mycollection.find().limit(2).skip(2)  
    

    这条命令可用于分页,Limit是pageSize,Skip是第几页*pageSize

    9.限定查询3条数据。

    db.mycollection.find().limit(3)  
    

    10.查询结果集的记录数。(查询salary小于300或大于400的个数)

    db.mycollection.find({$or:[{salary:{$lt:300}},{salary:{$gt:400}}]}).count()  
    

    查询指定列的数据。可以通过find(或者findOne)的第二个参数来指定想要的键,这样做既会节省传输的数据量,又能节省客户端解码文档的时间和内存消耗。

    11.查询mycollection集合中,'age'列和'salary'列。

    db.mycollection.find({},{age:1,salary:1}) 
    

     

    1表示显示此列的意思,也可以用true表示。

    12.按salary升序排序。(将1换成-1就是降序排序)

    db.mycollection.find().sort({salary:1})  
    

    13.查询username列,并去掉重复数据。

    db.mycollection.distinct('username')  
    

    MongoDB与RDBMS中Where语句的比较:

    14.查询age等于13的数据。

    db.mycollection.find({'age':13})  
    

    15.查询age小于13的数据。

    db.mycollection.find({age:{$lt:13}})  
    

    16.查询age大于15的数据。

    db.mycollection.find({age:{$gt:15}})  
    

    17.查询age不等于13的数据。

    db.mycollection.find({'age':{$ne:13}})  
    

    MongoDB AND条件

    MongoDB 的find() 方法可以传入多个键(key),每个键(key)以逗号隔开。语法格式如下:

    db.col.find({key1:value1, key2:value2})  
    

    18.查询age等于20,salary等于200的数据。

    db.mycollection.find({'age':20,'salary':200})  
    

    19.查询age小于13,salary大于等于200的数据。

    db.mycollection.find({$and:[{age:{$lt:13}},{salary:{$gte:200}}]})  
    

    MongoDB OR条件

    MongoDB OR 条件语句使用了关键字 $or,语法格式如下:

        db.col.find(  
           {  
              $or: [  
                 {key1: value1}, {key2:value2}  
              ]  
           }  
        )  
    

    20.查询salary大于300或age小于等于13的数据。



    db.mycollection.find({$or:[{salary:{$gt:300}},{age:{$lte:13}}]})

    AND和OR联合使用

    21.查询salary大于等于300时,username为'banma'或者age为8的数据,类似的常规 SQL 语句为:where salary>=300 and (username = 'banma' or age = 8)

    db.mycollection.find({'salary': {$gte:300}, $or: [{'username': 'banma'},{'age': 8}]})  
    

    MongoDB $type 操作符

    $type操作符是基于BSON类型来检索集合中匹配的数据类型,并返回结果。

    MongoDB 中可以使用的类型如下表所示:

    22.获取mycollection集合中username为String类型的数据。

    db.mycollection.find({'username':{$type:2}})  
    

    MongoDB 正则表达式

    正则表达式是使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。

    23.查询username中包含‘m’的数据。

    db.mycollection.find({username:/m/})
    

     

    24.查询以z开头的数据。

    db.mycollection.find({username:/^z/})  
    

    至此,实验结束!

     

    https://necydcy.me/
  • 相关阅读:
    《机器学习》第二次作业——第四章学习记录和心得
    机器学习一到三章笔记
    [ML] 第四章学习总结
    [CV] Mnist手写数字分类
    ModelArts (华为GPU/CPU计算云平台)体验
    [DataSturcture] 红黑树求逆序对
    [CV] 边缘提取和角点判断
    [CV] 灰度共生矩阵
    [DataStructure] AC 自动机(Aho–Corasick Automata)
    [GIT] 如何删除git上保存的文件(包含历史文件)
  • 原文地址:https://www.cnblogs.com/miria-486/p/9905483.html
Copyright © 2020-2023  润新知