zoukankan      html  css  js  c++  java
  • MongoDB Query and Projection Operators

    最近在学习MongoDB University的课程中关于CRUD部分的内容,课程结束后查阅了MongoDB的手册,将其中关于Query和Projection和部分总结一下。

    Query Selector

    MongoDB中的查询选择器主要包括Comparison、Logical、Element、Evaluation、Geospatial、Array、Bitwise和Comments几类。

    1)Comparison

    主要包括$eq (=)、$gt (>)、$gte (>=)、$lt (<)、$lte (<=)、$ne (!=),以及$in (匹配对应的值是否包含在一个指定数组中)、$nin (指定的元素不包含在指定的数组中)。各种选择器可以组合进行查询,如下:

    db.movieDetails.find({ runtime: { $gt: 90 } }).count()
    
    db.movieDetails.find({ runtime: { $gt: 90, $lt: 120 } }).count()
    
    db.movieDetails.find({ "tomato.meter": { $gte: 95 }, runtime: { $gt: 180 } })
    
    db.movieDetails.find({ rated: { $ne: "UNRATED" } }).count()
    
    db.movieDetails.find({ rated: { $in: ["G", "PG"] } }).pretty()

    2)Logical

    主要包括$or (||)、$and (&&)、$not (!)、$nor(匹配返回的是不符合所有查询条件的文档),如下:

    db.movieDetails.find({ $or : [ { "tomato.meter": { $gt: 99 } },
                                   { "metacritic": { $gt: 95 } } ] })
    
    
    db.movieDetails.find({ $and : [ { "metacritic": { $ne: 100 } },
                                    { "metacritic" { $exists: true } } ] })

    3)Element

    主要包括$exists (是否存在)、$type (BSON类型的字符串别名) 两种,如下:

    db.moviesDetails.find({ "tomato.meter": { $exists: true } })
    db.moviesScratch.find({ _id: { $type: "string" } })

    4)Evaluation

    主要包括$mod、$regex、$text和$where几类。

     $mod: 取模运算,需要提供一个包含除数和取模后的结果两个元素的数组,注意这里必须提供两个元素,不然会报错:

    db.inventory.find({ qty: { $mod: [4, 0] } })

    如上,需要从数据库取出qty字段的值能够被4整除的文档。

    $regex: 提供一个正则表达式来进行匹配,查找符合条件的文档:

    db.movieDetails.find({ "awards.text": { $regex: /^Won.*/ } }).pretty()

    $text: 对指定的文本进行搜索,具体格式如下:

    {
        $text: {
            $search: < string > , //  需要搜索的字符串
            $language: < string > , //  语言,可选
            $caseSensitive: < boolean > , //  是否区分大小写,可选,默认为false
            $diacriticSensitive: < boolean > //  是否区分变音符大小写,可选,默认为false
        }
    }

    $where:提供一个JavaScript表达式或函数来进行匹配搜索

    5)Geospatial

    这部分暂时没用到,稍后补充。主要是关于地理信息相关的查询。

    6)Array

    $all:匹配的元素必须包含数组的全部内容

    $elemMatch:

  • 相关阅读:
    [第二届构建之法论坛] 预培训文档(Java版)
    避免走进熟人社交的误区——给新手助教的几个建议
    BugPhobia发布篇章:Beta版本学霸在线系统正式发布
    BugPhobia回顾篇章:团队Beta 阶段工作分析
    BugPhobia终章篇章:学霸在线系统Beta阶段展示
    BugPhobia发布篇章:学霸在线系统测试报告
    BugPhobia开发终结篇章:Beta阶段第XI次Scrum Meeting
    BugPhobia开发篇章:Beta阶段第X次Scrum Meeting
    BugPhobia开发篇章:Beta阶段第IX次Scrum Meeting
    BugPhobia休息篇章:Beta阶段第IX次Scrum Meeting前奏
  • 原文地址:https://www.cnblogs.com/xiayao/p/6890926.html
Copyright © 2011-2022 走看看