美文网首页mongoDB
MongoDB读取文档之数组操作符

MongoDB读取文档之数组操作符

作者: AbstractCulture | 来源:发表于2020-09-14 10:12 被阅读0次

    首先,为了方便demo,我们需要创建包含数组和嵌套数组的文档

    db.accounts.insert([
        {
           name: "spring",
           balance: 8787,
           contact: ["China","Java","FrameWork"]
        },
        {
            name: "mysql",
            balance: 8,
            contact: [ ["oracle"],"database","8.0" ]
        },
        {
            name: "java",
            balance: 8,
            contact: [ ["oracle"],"core","8.0" ]
        }
    ])
    

    数组操作符

    $all

    • 语法结构

    匹配数组字段中包含的所有查询值的文档

    { <field>: { $all: [ <value1] , <value> , ... ] } }
    
    • 读取contact数组中包含China和Java的文档
    db.accounts.find( { contact: { $all: ["China", "Java"] } } )
    
    • 读取contact数组中包含oracle数组的文档
    db.accounts.find( { contact: { $all: [ ["oracle"] ] } } )
    

    $elemMatch

    • 语法结构

    匹配数组字段中至少存在一个值满足筛选条件的文档

    { <field>: { $elemMatch: { <query1] , <query2> , ... } } }
    
    • 读取contact数组中大于7.0小于9.0的文档信息
    db.accounts.find( { contact: {$elemMatch: { $lt: "9.0", $gt: "7.0" } } } )
    
    • 联合$all进行使用,读取contact数组中包含oracle数组且数组中存在大于7.0小于9.0的数值的文档信息
    db.accounts.find( {
        contact: {
                $elemMatch: {
                    $lt: "9.0",
                    $gt: "7.0"
                },
                $all: [ ["oracle"] ]
            }
    } )
    
    • 联合$all进行使用,读取contact数组存在大于7.0小于9.0的数值,和存在大于9.0小于10.0的文档信息
    db.accounts.find( {
        contact: {
                $all: [
                     { $elemMatch: { $lt: "9.0", $gt: "7.0" } },
                     { $elemMatch: { $lt: "10.0", $gt: "9.0" } },
                ]
            }
    } )
    

    相关文章

      网友评论

        本文标题:MongoDB读取文档之数组操作符

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