zoukankan      html  css  js  c++  java
  • MongoDB快速入门学习笔记4 MongoDB的文档查询操作

    先把student删除,再重新插入数据

    > db.student.drop()
    true
    > db.student.insert([{ "_id" : 1, "name" : "zhangsan", "age": 27, "sex": 1 }, { "_id" : 2, "name" : "lisi", "age": 27 } ,{ "_id" : 3, "name" : "wangwu", "age": 30 }, { "_id" : 4, "name" : "zhaoliu", "age": 28 }, { "_id" : 5, "name" : "qianliu", "age": 33 }, { "_id" : 6, "name" : "sunba", "age": 32 }])
    BulkWriteResult({
            "writeErrors" : [ ],
            "writeConcernErrors" : [ ],
            "nInserted" : 6,
            "nUpserted" : 0,
            "nMatched" : 0,
            "nModified" : 0,
            "nRemoved" : 0,
            "upserted" : [ ]
    })
    > db.student.find()
    { "_id" : 1, "name" : "zhangsan", "age" : 27 }
    { "_id" : 2, "name" : "lisi", "age" : 27 }
    { "_id" : 3, "name" : "wangwu", "age" : 30 }
    { "_id" : 4, "name" : "zhaoliu", "age" : 28 }
    { "_id" : 5, "name" : "qianliu", "age" : 33 }
    { "_id" : 6, "name" : "sunba", "age" : 32 }

    1、查询指定键
    db.集合名称.find({查询条件},{指定键})
    指定键:1表示显示,0表示不显示,_id默认显示

    > db.student.find({},{name:1})
    { "_id" : 1, "name" : "zhangsan" }
    { "_id" : 2, "name" : "lisi" }
    { "_id" : 3, "name" : "wangwu" }
    { "_id" : 4, "name" : "zhaoliu" }
    { "_id" : 5, "name" : "qianliu" }
    { "_id" : 6, "name" : "sunba" }
    > db.student.find({},{_id:0, age:0})
    { "name" : "zhangsan", "sex" : 1 }
    { "name" : "lisi" }
    { "name" : "wangwu" }
    { "name" : "zhaoliu" }
    { "name" : "qianliu" }
    { "name" : "sunba" }
    > db.student.find({},{_id:0, name:1})
    { "name" : "zhangsan" }
    { "name" : "lisi" }
    { "name" : "wangwu" }
    { "name" : "zhaoliu" }
    { "name" : "qianliu" }
    { "name" : "sunba" }

    2、各种查询方式
    $lt:<
    $lte:<=
    $gt:>
    $gte:>=
    $ne:!=

    > db.student.find({age:{$lt:30}})
    { "_id" : 1, "name" : "zhangsan", "age" : 27, "sex" : 1 }
    { "_id" : 2, "name" : "lisi", "age" : 27 }
    { "_id" : 4, "name" : "zhaoliu", "age" : 28 }
    > db.student.find({age:{$ne:27}})
    { "_id" : 3, "name" : "wangwu", "age" : 30 }
    { "_id" : 4, "name" : "zhaoliu", "age" : 28 }
    { "_id" : 5, "name" : "qianliu", "age" : 33 }
    { "_id" : 6, "name" : "sunba", "age" : 32 }

    $in:包含
    $nin:不包含

    > db.student.find({age:{$in:[27,28]}})
    { "_id" : 1, "name" : "zhangsan", "age" : 27, "sex" : 1 }
    { "_id" : 2, "name" : "lisi", "age" : 27 }
    { "_id" : 4, "name" : "zhaoliu", "age" : 28 }
    > db.student.find({age:{$nin:[27,28]}})
    { "_id" : 3, "name" : "wangwu", "age" : 30 }
    { "_id" : 5, "name" : "qianliu", "age" : 33 }
    { "_id" : 6, "name" : "sunba", "age" : 32 }


    $or:或者

    > db.student.find({$or:[{age:{$lt:29}}, {name:"sunba"}]})
    { "_id" : 1, "name" : "zhangsan", "age" : 27, "sex" : 1 }
    { "_id" : 2, "name" : "lisi", "age" : 27 }
    { "_id" : 4, "name" : "zhaoliu", "age" : 28 }
    { "_id" : 6, "name" : "sunba", "age" : 32 }

    null:空值

    > db.student.find({sex: null})
    { "_id" : 2, "name" : "lisi", "age" : 27 }
    { "_id" : 3, "name" : "wangwu", "age" : 30 }
    { "_id" : 4, "name" : "zhaoliu", "age" : 28 }
    { "_id" : 5, "name" : "qianliu", "age" : 33 }
    { "_id" : 6, "name" : "sunba", "age" : 32 }


    $type:键是某种类型的
    double:1
    string:2
    ...

    > db.student.insert({_id:7, name:7, age:70})
    WriteResult({ "nInserted" : 1 })
    > db.student.find({name: {$type: 2}})
    { "_id" : 1, "name" : "zhangsan", "age" : 27, "sex" : 1 }
    { "_id" : 2, "name" : "lisi", "age" : 27 }
    { "_id" : 3, "name" : "wangwu", "age" : 30 }
    { "_id" : 4, "name" : "zhaoliu", "age" : 28 }
    { "_id" : 5, "name" : "qianliu", "age" : 33 }
    { "_id" : 6, "name" : "sunba", "age" : 32 }
    > db.student.find({name: {$type: 1}})
    { "_id" : 7, "name" : 7, "age" : 70 }

    正则表达式

    > db.student.find({name: /si/})
    { "_id" : 2, "name" : "lisi", "age" : 27 }


    db.集合名称.findOne({查询条件},{指定键})
    查询出符合条件的第一条数据

    > db.student.findOne()
    { "_id" : 1, "name" : "zhangsan", "age" : 27, "sex" : 1 }

    db.集合名称.find({查询条件},{指定键}).limit(数字)
    查询前几条数据

    > db.student.find().limit(3)
    { "_id" : 1, "name" : "zhangsan", "age" : 27, "sex" : 1 }
    { "_id" : 2, "name" : "lisi", "age" : 27 }
    { "_id" : 3, "name" : "wangwu", "age" : 30 }

    db.集合名称.find({查询条件},{指定键}).skip(数字)
    跳过前几条数据

    > db.student.find().skip(2)
    { "_id" : 3, "name" : "wangwu", "age" : 30 }
    { "_id" : 4, "name" : "zhaoliu", "age" : 28 }
    { "_id" : 5, "name" : "qianliu", "age" : 33 }
    { "_id" : 6, "name" : "sunba", "age" : 32 }
    { "_id" : 7, "name" : 7, "age" : 70 }

    可以使用limit()和skip()实现分页

    > db.student.find().skip(0).limit(3)
    { "_id" : 1, "name" : "zhangsan", "age" : 27, "sex" : 1 }
    { "_id" : 2, "name" : "lisi", "age" : 27 }
    { "_id" : 3, "name" : "wangwu", "age" : 30 }
    > db.student.find().skip(3).limit(3)
    { "_id" : 4, "name" : "zhaoliu", "age" : 28 }
    { "_id" : 5, "name" : "qianliu", "age" : 33 }
    { "_id" : 6, "name" : "sunba", "age" : 32 }
    > db.student.find().skip(6).limit(3)
    { "_id" : 7, "name" : 7, "age" : 70 }

    db.集合名称.find().sort({键:数字})
    数字为1表示升序,数字为2表示降序

    > db.student.find().sort({age:1})
    { "_id" : 1, "name" : "zhangsan", "age" : 27, "sex" : 1 }
    { "_id" : 2, "name" : "lisi", "age" : 27 }
    { "_id" : 4, "name" : "zhaoliu", "age" : 28 }
    { "_id" : 3, "name" : "wangwu", "age" : 30 }
    { "_id" : 6, "name" : "sunba", "age" : 32 }
    { "_id" : 5, "name" : "qianliu", "age" : 33 }
    { "_id" : 7, "name" : 7, "age" : 70 }
    > db.student.find().sort({age:1, _id:-1})
    { "_id" : 2, "name" : "lisi", "age" : 27 }
    { "_id" : 1, "name" : "zhangsan", "age" : 27, "sex" : 1 }
    { "_id" : 4, "name" : "zhaoliu", "age" : 28 }
    { "_id" : 3, "name" : "wangwu", "age" : 30 }
    { "_id" : 6, "name" : "sunba", "age" : 32 }
    { "_id" : 5, "name" : "qianliu", "age" : 33 }
    { "_id" : 7, "name" : 7, "age" : 70 }
  • 相关阅读:
    重载和重写的定义
    方法的重载与重写有什么区别?
    java: while 和do while区别
    java中的运算符
    java 8种基本数据类型
    java.面向对象特征
    java语言的特点
    java.注释类型
    char 和 varchar2 区别
    使用sql对数据库进行简单的增删改查
  • 原文地址:https://www.cnblogs.com/zhangyanhu/p/5537292.html
Copyright © 2011-2022 走看看