• mongodb 查询数据


    MongoDB概念解析:

    等同于SQL的数据库表:collection
    document:等同于SQL的数据记录行
    field:等同于SQL的数据字段
    表连接,MongoDB不支持
    主键,MongoDB自动将_id字段设置为主键

    1.查询数据(文档)

    db.mycol.find()
    db.mycol.find().pretty()  //格式化显示
    db.mycol.findOne()      //返回一条记录

    2.查看有几条记录

    db.mycol.count()

    3.查询需要的字段:

    db.mycol.find({},{"title":1})  //只显示id和title
    db.mycol.find({},{"title":1,"by":1}) //显示id,title和by
    db.mycol.find({},{"title":1,_id:0})  //只显示title

    4.条件查询指定返回的键

    db.[documentName].find ({条件},{键指定})
    数据准备persons.json

    5.db.person.find({为空表示查询全部},{_id:0,name:1,country:1})//_id:0表示不显示_id

    5.1查询出所有数据的指定键(name ,age ,country)

    db.persons.find({},{name:1,age:1,country:1,_id:0})

    5.2查询出年龄在25到27岁之间的学生

    db.persons.find({age: {$gte:25,$lte:27},{_id:0,age:1})

    5.3查询出所有不是韩国籍的学生的数学成绩

     db.persons.find({country:{$ne:” Korea”}},{_id:0,m:1})

    6.包含或不包含

     $in或$nin

    6.1查询国籍是中国或美国的学生信息

    db.persons.find({country:{$in:[“USA”,“China”]}})

    6.2查询国籍不是中国或美国的学生信息

    db.persons.find({country:{$nin:[“USA”,“China”]}})

    7.OR查询

    $or
    7.1查询语文成绩大于85或者英语大于90的学生信息

    db.persons.find({$or:[{c:{$gte:85}},{e:{$gte:90}}]},{_id:0,c:1,e:1})

    8.Null

    把中国国籍的学生上增加新的键sex

    db.person.update({country:”China”},{$set:{sex:”m”}})

    8.1查询出sex 等于 null的学生

    db.persons.find({sex:{$in:[null]}},{country:1})

    9.正则查询

    9.1查询出名字中存在”li”的学生的信息

    db.persons.find({name:/li/i},{_id:0,name:1}) 

    10.$not的使用

    $not可以用到任何地方进行取反操作
    10.2查询出名字中不存在”li”的学生的信息

    db.persons.find({name:{$not:/li/i}},{_id:0,name:1})
    $not和$nin的区别是$not可以用在任何地方儿$nin是用到集合上的

    11.数组查询$all和index应用

    11.1查询喜欢看MONGOD和JS的学生

     db.persons.find({books:{$all:[“MONGOBD”,”JS”]}},{books:1,_id:0})

    11.2查询第二本书是JAVA的学习信息

     db.persons.find({“books.1”:”JAVA”})

    12。查询指定长度数组$size它不能与比较查询符一起使用(这是弊端)

    12.1查询出喜欢的书籍数量是4本的学生

     db.persons.find({books:{$size:4}},{_id:0,books:1})

    12.2查询出喜欢的书籍数量大于3本的学生

    1.增加字段size

    db.persons.update({},{$set:{size:4}},false, true)

    2.改变书籍的更新方式,每次增加书籍的时候size增加1

     db.persons.update({查询器},{$push:{books:”ORACLE”},$inc:{size:1}})

     3.利用$gt查询

    db.persons.find({size:{$gt:3}})

    4.利用shell查询出Jim喜欢看的书的数量

    var persons = db.persons.find({name:"jim"})
    while(persons.hasNext()){
        obj = persons.next();
            print(obj.books.length)
    } 

    1.mongodb 是NOSQL数据库但是他在文档查询上还是很强大的
    2.查询符基本是用到花括号里面的更新符基本是在外面
    3.shell是个彻彻底底的JS引擎,但是一些特殊的操作要靠他的
    各个驱动包来完成(JAVA,NODE.JS)

    13.$slice操作符返回文档中指定数组的内部值

    13.1查询出Jim书架中第2~4本书

    db.persons.find({name:"jim"},{books:{"$slice":[1,3]}})

    13.2查询出最后一本书

    db.persons.find({name:"jim"},{books:{"$slice":-1},_id:0,name:1})

    14.文档查询

    为jim添加学习简历文档 jim.json
    查询出在K上过学的学生
    1. 这个我们用绝对匹配可以完成,但是有些问题(找找问题?顺序?总要带着score?)

    db.persons.find({school:{school:"K",score:"A"}},{_id:0,school:1})

    2.为了解决顺序的问题我可以用对象”.”的方式定位

    db.persons.find({"school.score":"A","school.school":"K"},{_id:0,school:1})

    3.这样也问题看例子:

     db.persons.find({"school.score":"A","school.school":”J”},{_id:0,school:1})

    同样能查出刚才那条数据,原因是score和school会去其他对象对比
    4.正确做法单条条件组查询$elemMatch

     db.persons.find({school:{$elemMatch:{school:"K",score:"A"}}})
  • 相关阅读:
    Scala window下安装
    HIVE 总结
    mapreduce源码解析以及优化
    Hadoop2.x + eclipse 插件配置
    python spark
    Hive与Hbase关系整合
    Sqoop架构以及应用介绍
    flume
    SOAP
    Leetcode#75 Sort Colors
  • 原文地址:https://www.cnblogs.com/yu-hailong/p/8404317.html
Copyright © 2020-2023  润新知