• MongoDB的查询


    查询:

    方式一:

    find()

    >db.collectionName.find(document)

    find()方法将以非结构化的方式显示所有文档。

    比如:

    > db.mycollection.find()

    { "_id" : 101, "title" : "MongoDB Guide", "description" : "MongoDB is no sql database", "by" : "yiibai tutorials", "url" : "http://www.yiibai.com", "tags" : [ "mongodb", "database", "NoSQL" ], "likes" : 100 }
    { "_id" : 102, "title" : "NoSQL Database", "description" : "NoSQL database doesn't have tables", "by" : "yiibai tutorials", "url" : "http://www.yiibai.com", "tags" : [ "mongodb", "database", "NoSQL" ], "likes" : 210, "comments" : [ { "user" : "user1", "message" : "My first comment", "dateCreated" : ISODate("2017-12-10T10:35:00Z"), "like" : 0 } ] }
    { "_id" : 104, "title" : "Python Quick Guide", "description" : "Python Quick start ", "by" : "yiibai tutorials", "url" : "http://www.yiibai.com", "tags" : [ "Python", "database", "NoSQL" ], "likes" : 30, "comments" : [ { "user" : "user1", "message" : "My first comment", "dateCreated" : ISODate("2018-12-10T10:35:00Z"), "like" : 590 } ] }

    pretty()

    pretty()方法将以格式化的方式显示所有文档。

    >db.mycol.find().pretty()

    比如:

    > db.mycollection.find().pretty()
    {
            "_id" : 101,
            "title" : "MongoDB Guide",
            "description" : "MongoDB is no sql database",
            "by" : "yiibai tutorials",
            "url" : "http://www.yiibai.com",
            "tags" : [
                    "mongodb",
                    "database",
                    "NoSQL"
            ],
            "likes" : 100
    }
    {
            "_id" : 102,
            "title" : "NoSQL Database",
            "description" : "NoSQL database doesn't have tables",
            "by" : "yiibai tutorials",
            "url" : "http://www.yiibai.com",
            "tags" : [
                    "mongodb",
                    "database",
                    "NoSQL"
            ],
            "likes" : 210,
            "comments" : [
                    {
                            "user" : "user1",
                            "message" : "My first comment",
                            "dateCreated" : ISODate("2017-12-10T10:35:00Z"),
                            "like" : 0
                    }
            ]
    }

     还有findOne()方法,只返回一行

    > db.mycollection.findOne()
    {
            "_id" : 101,
            "title" : "MongoDB Guide",
            "description" : "MongoDB is no sql database",
            "by" : "yiibai tutorials",
            "url" : "http://www.yiibai.com",
            "tags" : [
                    "mongodb",
                    "database",
                    "NoSQL"
            ],
            "likes" : 100
    }

    $lt   表示范围

    等于  {<key>:<value>}            db.mycol.find({"by":"yiibai"}).pretty()

    小于  {<key>:{$lt:<value>}}     db.mycol.find({"likes":{$lt:50}}).pretty())

    小于等于 {<key>:{$lte:<value>}}  db.mycol.find({"likes":{$lte:50}}).pretty()

    大于  {<key>:{$gt:<value>}}       db.mycol.find({"likes":{$gt:50}}).pretty()

    大于等于 {<key>:{$gte:<value>}}   db.mycol.find({"likes":{$gte:50}}).pretty()

    不等于    {<key>:{$ne:<value>}}     db.mycol.find({"likes":{$ne:50}}).pretty()

    mongodb中如果用逗号 , 分开传递多个键,则视为  and  条件

    语法:

    >db.mycol.find(

    {

    $and: [ {key1: value1}, {key2:value2} ]

    }

    ).pretty()

    比如:

    > db.mycol.find({$and:[{"by":"yiibai tutorials"},{"title": "MongoDB Overview"}]}).pretty()

    可以在find子句中传递任意数量的键值。

    or 条件

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

    and和or条件一起的

    以下示例将显示likes大于10以及标题是“MongoDB Overview”或者“yiibai tutorials”的所有文档。 等价SQL where子句为

    SELECT * FROM mycol where likes> 10 AND(by ='yiibai tutorials' OR title ='MongoDB Overview');

    >db.mycol.find({"likes": {$gt:10}, $or: [{"by": "yiibai tutorials"}, {"title": "MongoDB Overview"}]}).pretty()

    查询嵌入、嵌套文档

    匹配嵌入、嵌套文档

    要在作为嵌入/嵌套文档的字段上指定相等条件,请使用查询过滤器文档{<field>:<value>},其中<value>是要匹配的文档。

    db.inventory.find( { size: { h: 14, w: 21, uom: "cm" } } )  如果是嵌套,嵌套的字段一定要完整,不能漏掉一个字段

    整个嵌入式文档中的相等匹配需要精确匹配指定的<value>文档,包括字段顺序。   如果是嵌套,嵌套的字段一定要完整,不能漏掉一个字段

    例如,以下查询选择字段size等于{ h: 14, w: 21, uom: "cm" }的所有文档:

    db.inventory.find( { size: { h: 14, w: 21, uom: "cm" } } )
    Shell

    整个嵌入式文档中的相等匹配需要精确匹配指定的<value>文档,包括字段顺序。
    例如,以下查询与库存(inventory)集合中的任何文档不匹配:

    db.inventory.find(  { size: { w: 21, h: 14, uom: "cm" } }  )

    查询嵌套字段:

    db.inventory.find( { "size.uom": "in" } )

    使用查询运算符指定匹配:

    { <field1>: { <operator1>: <value1> }, ... }

    以下查询使用size字段中嵌入的字段h中的小于运算符($lt):

    db.inventory.find( { "size.h": { $lt: 15 } } )

    指定and条件

    以下查询选择嵌套字段h小于15的所有文档,嵌套字段uom等于“in”,status字段等于“D”:

    db.inventory.find( { "size.h": { $lt: 15 }, "size.uom": "in", status: "D" } )

  • 相关阅读:
    oracle 第12章 归档日志文件
    oracle 第09章 参数文件
    oracle 第11章 重做日志文件
    oracle 第10章 控制文件
    oracle 第14章 表空间管理
    linux yum源配置
    oracle 第08章 用户、权限、角色管理
    oracle 第07章 网络配置管理
    第二阶段冲刺-06
    第二阶段冲刺-05
  • 原文地址:https://www.cnblogs.com/linqiuhua/p/7766482.html
Copyright © 2020-2023  润新知