• MongoDB的Find详解(一)


    1.指定返回的键

    db.[documentName].find ({条件},{键指定})

    数据准备persons.json

    var persons = [{
    name:"jim",
    age:25,
    email:"75431457@qq.com",
    c:89,m:96,e:87,
    country:"USA",
    books:["JS","C++","EXTJS","MONGODB"]
    },
    {
    name:"tom",
    age:25,
    email:"214557457@qq.com",
    c:75,m:66,e:97,
    country:"USA",
    books:["PHP","JAVA","EXTJS","C++"]
    },
    {
    name:"lili",
    age:26,
    email:"344521457@qq.com",
    c:75,m:63,e:97,
    country:"USA",
    books:["JS","JAVA","C#","MONGODB"]
    },
    {
    name:"zhangsan",
    age:27,
    email:"2145567457@qq.com",
    c:89,m:86,e:67,
    country:"China",
    books:["JS","JAVA","EXTJS","MONGODB"]
    },
    {
    name:"lisi",
    age:26,
    email:"274521457@qq.com",
    c:53,m:96,e:83,
    country:"China",
    books:["JS","C#","PHP","MONGODB"]
    },
    {
    name:"wangwu",
    age:27,
    email:"65621457@qq.com",
    c:45,m:65,e:99,
    country:"China",
    books:["JS","JAVA","C++","MONGODB"]
    },
    {
    name:"zhaoliu",
    age:27,
    email:"214521457@qq.com",
    c:99,m:96,e:97,
    country:"China",
    books:["JS","JAVA","EXTJS","PHP"]
    },
    {
    name:"piaoyingjun",
    age:26,
    email:"piaoyingjun@uspcat.com",
    c:39,m:54,e:53,
    country:"Korea",
    books:["JS","C#","EXTJS","MONGODB"]
    },
    {
    name:"lizhenxian",
    age:27,
    email:"lizhenxian@uspcat.com",
    c:35,m:56,e:47,
    country:"Korea",
    books:["JS","JAVA","EXTJS","MONGODB"]
    },
    {
    name:"lixiaoli",
    age:21,
    email:"lixiaoli@uspcat.com",
    c:36,m:86,e:32,
    country:"Korea",
    books:["JS","JAVA","PHP","MONGODB"]
    },
    {
    name:"zhangsuying",
    age:22,
    email:"zhangsuying@uspcat.com",
    c:45,m:63,e:77,
    country:"Korea",
    books:["JS","JAVA","C#","MONGODB"]
    }]
    for(var i = 0;i<persons.length;i++){
    db.persons.insert(persons[i])
    }

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

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

    2.查询条件

     

    2.查询条件

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

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

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

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

    3.包含或不包含

    $in或$nin

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

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

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

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

    4.OR查询

    $or

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

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

    5.Null

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

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

    2.5查询出sex 等于 null的学生

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

    6.正则查询

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

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

    7.$not的使用

    $not可以用到任何地方进行取反操作

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

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

    $not和$nin的区别是$not可以用在任何地方儿$nin是用到集合上的

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

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

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

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

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

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

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

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

    2.9查询出喜欢的书籍数量大于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}})

    2.10利用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)

     

    //查询出年龄在25到27岁之间的学生
    db.persons.find({age: {$gte:25,$lte:27}},{ "_id" : ObjectId("53ffe4a7504a4886bc371029"),age:1})
    
    //查询出所有不是韩国籍的学生的数学成绩
    db.persons.find({country: {$ne:"Korea"}},{ "_id" : ObjectId("53ffe4a7504a4886bc371029"),age:1})
    
    //查询国籍是中国或美国的学生信息
    db.persons.find({country:{$in:["USA","China"]}})
    
    //查询国籍不是中国或美国的学生信息
    db.persons.find({country:{$nin:["USA","China"]}})
    
    //查询语文成绩大于85或者英语大于90的学生信息
    db.persons.find({$or:[{c:{$gte:85}},{e:{$gte:90}}]},{_id:0,c:1,e:1})
    
    
    //把中国国籍的学生上增加新的键sex
    db.persons.update({country:"China"},{$set:{sex:"ms"}},false,true)
    
    db.persons.update({country:"USA"},{$set:{set:"ms"}},true,true)
    
    db.persons.update({country:"China"},{$set:{sex:"m"}},false,true)
    
    
    db.persons.update(
    { age: 27 },
    { $set: { status: "A" } },
    { multi: true }
    )
    
    
    //查询出sex 等于 null的学生
    db.persons.find({sex:{$in:[null]}},{country:1})
    
    //查询出名字中存在”li”的学生的信息,正则查询
    db.persons.find({name:/li/i},{_id:0,name:1})
    //查询出名字中不存在”li”的学生的信息
    db.persons.find({name:{$not:/li/i}},{_id:0,name:1})
    
    
    //查询喜欢看MONGOD和JS的学生
    db.persons.find({books:{$all:["MONGOBD","JS"]}},{books:1,"_id" : ObjectId("53ffe4a7504a4886bc371029")})
    
    
    //查询喜欢看MONGOD和JS的学生
    db.persons.find({"books.1":"JAVA"})
    
    
    //查询出喜欢的书籍数量是4本的学生
    db.persons.find({books:{$size:4}},{_id:0,books:1})
    
    
    //增加字段size
    db.persons.update({},{$set:{size:4}},false,true)
    
    
    
    db.persons.update({name:"tom"},{$push:{books:"ORACLE"},$inc:{size:1}})
    
    //利用$gt查询
    db.persons.find({size:{$gt:4}})
    
    
    //利用shell查询出Jim喜欢看的书的数量
    
    var persons = db.persons.find({name:"jim"})
    while(persons.hasNext()){
    obj = persons.next();
    print(obj.books.length)
    }

    声明:本博客高度重视知识产权保护,发现本博客发布的信息包含有侵犯其著作权的链接内容时,请联系我,我将第一时间做相应处理,联系邮箱ffgign@qq.com。


    作者:Mark Fan (小念头)    来源:http://cube.cnblogs.com
    说明:未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。如有疑问,可以通过 ffgign@qq.com 联系作者,本文章采用 知识共享署名-非商业性使用-相同方式共享 2.5 中国大陆许可协议进行许可

    知识共享许可协议

  • 相关阅读:
    UML学习笔记<1>
    安装和配置jBPM4,并举个hello.w
    Myeclipse--jBPM4.3插件
    今天讲座的感悟--java
    程序员必看的书
    SSH的整合
    一款Timer倒计时器
    一款jq的计时器
    Code Complete-13/7/29
    java-Timer类使用方法
  • 原文地址:https://www.cnblogs.com/cube/p/3945474.html
Copyright © 2020-2023  润新知