MongoDB 查询和投影运算符

MongoDB 查询和投影运算符

MongoDB查询运算符包括比较、逻辑、元素、评估、地理空间、数组、位运算和注释运算符。

MongoDB比较运算符

$eq

$eq指定了等于条件。匹配字段值等于指定值的文档。

语法:

{ <field> : { $eq: <value> } }

示例:

db.books.find({ price: { $eq: 300 } })

以上示例查询books集合,选择所有price字段值等于300的文档。

$gt

$gt选择字段值大于指定值的文档。

语法:

{ field: { $gt: value } }

示例:

db.books.find({ price: { $gt: 200 } })

$gte

$gte选择字段值大于或等于指定值的文档。

语法:

{ field: { $gte: value } }

示例:

db.books.find ( { price: { $gte: 250 } } ) 

$in

$in操作符选择字段值等于指定数组中的任何值的文档。

语法:

{ filed: { $in: [ , , ……] } }

示例:

db.books.find( { price: { $in: [100, 200] } } )

$lt

$lt操作符选择字段值小于指定值的文档。

语法:

{ field: { $lt: value } }

示例:

db.books.find ( { price: { $lt: 20 } } )

$lte

$lte运算符选择字段值小于或等于指定值的文档。

语法:

{ field: { $lte: value } }

示例:

db.books.find ( { price: { $lte: 250 } } )

$ne

$ne运算符选择字段值与指定值不相等的文档。

语法:

{ <field>: { $ne: <value> } }

示例:

db.books.find({"price": {"$ne": 500}})

$nin

$nin操作符选择字段值不在指定数组中或不存在的文档。

语法:

{"field": {"$nin": ["", "", ....]}}

示例:

db.books.find({"price": {"$nin": [50, 150, 200]}})

MongoDB逻辑运算符

$and

$and操作符在一个数组上执行逻辑AND操作。数组应为一个或多个表达式,并选择满足数组中所有表达式的文档。

语法:

{"$and": [{""}, {""}, ....]}

示例:

db.books.find ( { and: [ { price: {ne: 500 } }, { price: { $exists: true } } ] } )

$not

$not 运算符在指定的表达式上起到逻辑 NOT 的作用,选择与表达式不相关的文档。

语法:

{ field: { $not: { <operator-expression> } } }

示例:

db.books.find ( { price: { not: {gt: 200 } } } )

$nor

$nor 运算符在一个包含一个或多个查询表达式的数组上起到逻辑 NOR 的作用,并选择在数组中失败了所有查询表达式的文档。

语法:

{ $nor: [ { <expression1> } , { <expresion2> } , ..... ] }

示例:

db.books.find({$nor: [{price: 200}, {sale: true}]})

$or

它在包含两个或多个表达式的数组上执行逻辑或操作,并选择至少满足一个表达式的文档。

语法:

{ $or: [ { <exp_1> }, { <exp_2> }, ... , { <exp_n> } ] }

示例:

db.books.find({or: [{quantity: {lt: 200}}, {price: 500}]})

MongoDB元素运算符

$exists

$exists运算符匹配包含字段的文档,当布尔值为true时。它也匹配字段值为null的文档。

语法:

{ field: { $exists: <boolean> } }

示例:

db.books.find({ qty: { exists: true,nin: [ 5, 15 ] } })

$type

类型运算符选择字段值为指定的BSON类型的文档。

语法:

{ field: { $type: <BSON type> } }

示例:

db.books.find({ "bookid": { $type: 2 } });

MongoDB计算运算符

$expr

expr运算符允许在查询语言中使用聚合表达式。

语法:

{ $expr: { <expression> } }

示例:

db.store.find( { expr: {gt: [ "$product" , "price" ] } } ) 

$jsonSchema

它匹配满足指定JSON模式的文档。

语法:

{ $jsonSchema: <JSON schema object> }

$mod

mod操作符选择字段被除数除出的值具有指定余数的文档。

语法:

{ field: { $mod: [ divisor, remainder ] } }

示例:

db.books.find ( { qty: { $mod: [ 200, 0] } } )

$regex

它为查询中匹配字符串的模式提供了正则表达式能力。MongoDB使用与Perl兼容的正则表达式。

语法:

{ <field>: /pattern/<options> }

示例:

db.books.find( { price: { regex: /789/ } } )

$text

$text运算符在具有文本索引的字段内容中搜索文本。

语法:

             {
  text:
    {search: <string>,
      language: <string>,caseSensitive: <boolean>,
      $diacriticSensitive: <boolean>
    }
}

示例:

db.books.find( { text: {search: "Othelo" } } )

$where

“where”操作符用于将包含JavaScript表达式的字符串或完整的JavaScript函数传递给查询系统。

示例:

                db.books.find( { $where: function() {
   return (hex_md5(this.name)== "9b53e667f30cd329dca1ec9e6a8")
} } );

MongoDB地理空间运算符

$geoIntersects

它只选择地理空间数据与给定GeoJSON对象有交集的文档。

语法:

{
  <location field>: {
     geoIntersects: {geometry: {
           type: "<object type>" ,
           coordinates: [ <coordinates> ]
        }
     }
  }
}

示例:

                db.places.find(
   {
     loc: {
       geoIntersects: {geometry: {
             type: "Triangle" ,
             coordinates: [
               [ [ 0, 0 ], [ 3, 6 ], [ 6, 1 ] ]
             ]
          }
       }
     }
   }
)

$geoWithin

$geoWithin操作符选择在指定形状内完全存在的地理空间数据的文档。

语法:

              {
   <location field>: {
      geoWithin: {geometry: {
            type: <"Triangle"或"Rectangle"> ,
            coordinates: [ <coordinates> ]
         }
      }
   }
}

$near

$near操作符定义一个点,用于返回从近到远的地理空间查询结果的文档。

语法:

         {  
<location field>: {  
  near: {geometry: {  
       type: "Point" ,  
       coordinates: [ <longitude> , <latitude> ]  
    },  
    maxDistance: <distance in meters>,minDistance: <distance in meters>  
  }  
}  

示例:

db.places.find(
{
    location:
    { near :
        {geometry: { type: "Point",  coordinates: [ -73.9667, 40.78 ] },
            minDistance: 1000,maxDistance: 5000
        }
    }
}
)

$nearSphere

nearsphere操作符指定一个点,用于从最近到最远返回地理空间查询结果的文档。

语法:

         {  
  nearSphere: [ <x>, <y> ],minDistance: <distance in radians>,  
  $maxDistance: <distance in radians>  
}  

示例:

               db.legacyPlaces.find(
   { location : { nearSphere : [ -73.9667, 40.78 ],maxDistance: 0.10 } }
)

$all

它选择字段值是包含所有指定元素的数组的文档。

语法:

{ <field>: { $all: [ <value1> , <value2> ... ] } }

示例:

      db.books.find( { tags: { $all: [ "Java", "MongoDB", "RDBMS" ] } } )

$elemMatch

这个操作符关联包含至少一个与所有给定查询条件匹配的数组字段的文档。

语法:

{ <field>: { $elemMatch: { <query1>, <query2>, ... } } }  

示例:

db.books.find(
   { results: { elemMatch: {gte: 500, $lt: 400 } } }
)

$size

它选择具有由参数指定的元素数量的任何数组。

语法:

db.collection.find( { field: { $size: 2 } } ); 

MongoDB位运算符

$bitsAllClear

它匹配在给定的查询中所有位位置都在字段中清除的文档。

语法:

{ <field>: { $bitsAllClear: <numeric bitmask> } }

示例:

db.inventory.find( { a: { $bitsAllClear: [ 1, 5 ] } } )

$bitsAllSet

bitallset操作符匹配在字段中设置了查询指定的所有位位置的文档。

语法:

{ <field>: { $bitsAllSet: <numeric bitmask> } }

示例:

db.inventory.find( { a: { $bitsAllClear: [ 1, 5 ] } } )

$bitsAnyClear

bitAnyClear操作符匹配在字段中任何位位置由查询指定的位都为清零的文档。

语法:

{ <field>: { $bitsAnyClear: <数值位掩码> } }

示例:

db.inventory.find( { a: { $bitsAnyClear: [ 5, 10 ] } } )

$bitsAnySet

它匹配字段中查询中指定的任何位位置被设置的文档。

语法:

{ <field>: { $bitsAnySet: <数值位掩码> } }

示例:

db.inventory.find( { a: { $bitsAnySet: [ 1, 5 ] } } )

MongoDB注释运算符

$comment

$comment运算符将注释与接受查询断言的任何表达式关联起来。

语法:

db.inventory.find( { <query>, $comment: <comment> } )

示例:

                db.inventory.find(
   {
     x: { mod: [ 1, 0 ] },comment: "Find Odd values."
   }
)

MongoDB 投影运算符

$

$运算符将查询结果中的数组内容限制为仅包含与查询文档匹配的第一个元素。

语法:

     db.books.find( { <array>: <value> ... },
          { "<array>.": 1 } )
     db.books.find( { <array.field>: <value> ...},
          { "<array>.": 1 } )                

$elemMatch

使用这个操作符可以限制数组字段的内容,从查询结果中只包含与元素$elemMatch条件匹配的第一个元素。

语法:

db.library.find( { bookcode: "63109" },
{ students: { $elemMatch: { roll: 102 } } } ) 

$meta

元操作符返回与查询关联的元数据的每个匹配文档的结果。

语法:

{ $meta: <metaDataKeyword> }

示例:

                db.books.find(
   <query>,
   { score: { $meta: "textScore" } }
)

$slice

它控制查询返回的数组中的值的数量。

语法:

db.books.find( { field: value }, { array: {$slice: count } } );

示例:

db.books.find( {}, { comments: { $slice: [ 200, 100 ] } } )

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程