美文网首页
MongoDB 条件查询 --- 2022-04-03

MongoDB 条件查询 --- 2022-04-03

作者: 一位先生_ | 来源:发表于2022-05-28 01:52 被阅读0次

    本章通过mongo shell介绍,MongoDB的基本查询语法,mongo shell中提了db.collection.find()方法,用于查询数据。

    准备测试数据

    往inventory集合插入几条数据。

    db.inventory.insertMany([
       { item: "journal", qty: 25, size: { h: 14, w: 21, uom: "cm" }, status: "A" },
       { item: "notebook", qty: 50, size: { h: 8.5, w: 11, uom: "in" }, status: "A" },
       { item: "paper", qty: 100, size: { h: 8.5, w: 11, uom: "in" }, status: "D" },
       { item: "planner", qty: 75, size: { h: 22.85, w: 30, uom: "cm" }, status: "D" },
       { item: "postcard", qty: 45, size: { h: 10, w: 15.25, uom: "cm" }, status: "A" }
    ]);
    
    

    查询全部文档

    查询inventory集合中的所有文档,{} 表示传入一个空的查询条件。

    db.inventory.find( {} )
    
    

    作用类似下面SQL语句:

    SELECT * FROM inventory
    
    

    等值查询条件

    语法:

    { 字段名: 匹配值, ... }
    
    

    例子1:

    db.inventory.find( { status: "D" } )
    
    

    作用类似下面SQL语句:

    SELECT * FROM inventory WHERE status = "D"
    
    

    例子2:
    嵌套字段查询,使用点(.)连接嵌套文档的字段即可

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

    作用类似下面SQL语句:

    SELECT * FROM inventory WHERE size.uom = "in"
    
    

    提示:MongoDB文档是以JSON格式存储,所以支持使用嵌套字段作为查询条件。

    使用查询操作符

    MongoDB支持丰富的查询运算符,用于实现各种复杂的查询。
    语法:

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

    说明:

    • field1 字段名
    • operator1 运算符
    • value1 运算符参数

    $in操作符例子:

    db.inventory.find( { status: { $in: [ "A", "D" ] } } )
    
    

    作用类似下面SQL语句中的in查询:

    SELECT * FROM inventory WHERE status in ("A", "D")
    
    

    提示:操作符详解,请参考后续MongoDB查询详解章节。

    and条件

    类似SQL, MongoDB也支持and条件。

    例子:

    // 默认连续输入多个条件,条件之间使用and连接
    db.inventory.find( { status: "A", item: "postcard"} )
    
    

    作用类似下面SQL语句:

    SELECT * FROM inventory WHERE status = "A" AND item = "postcard"
    
    

    or条件

    类似SQL, MongoDB也支持or条件, or条件是通过$or操作符实现。

    语法:

    {
        $or: [
            {条件1},
            {条件2},
            .....
        ]
    }
    
    

    例子:

    db.inventory.find( { $or: [ { status: "A" }, { item: "postcard"} ] } )
    
    

    作用类似下面SQL语句:

    SELECT * FROM inventory WHERE status = "A" OR item = "postcard"
    
    

    组合and和or条件

    类似SQL, MongoDB可以通过and和or一起组合复杂的查询条件

    例子:

    db.inventory.find( {
         status: "A",
         $or: [ { qty: { $lt: 30 } }, { item: /^p/ } ]
    } )
    
    

    这里用到了 $lt 小于操作符,正则匹配。

    作用类似下面SQL语句:

    SELECT * FROM inventory WHERE status = "A" AND ( qty  < 30 or item like 'p%')
    
    

    提示:MongoDB查询条件详解请参考后续章节。

    相关文章

      网友评论

          本文标题:MongoDB 条件查询 --- 2022-04-03

          本文链接:https://www.haomeiwen.com/subject/ykgfsrtx.html