MongoDB数据库文档CRUD操作教程
MongoDBMongoDB 数据库文档数据库文档 CRUDCRUD 操作教程操作教程MongoDBMongoDB 文档文档 CRUDCRUD 操作操作查询文档查询文档基本使用基本使用mongodb 查询文档的语法如下:? 1db.collection_name.find(query, projection) ? ? ? ? ? # 以压缩格式返回数据 ? 1db.collection_name.find(query, projection).pretty() ?# 以易读格式返回数据query:可选,使用查询操作符指定查询条件;projection:可选,使用投影操作符指定返回的键,如果需要返回文档中所有的键,只需要省略该参数;? 1# 查询 testdb.artciles 集合中的所有文档 ? 1> use testdb ? 1> db.articles.find().pretty() ? ? ? 1? ? 1# 查询 testdb.articles 集合中 author='assad' 的文档 ? 1> db.atricles.find( author:'assad' )queryquery 条件操作符条件操作符操操作符作符含义和语法含义和语法示例示例比较查询符比较查询符:等于(=); : db.col.find( name:'assad'? )查询 name='assad' 的文档$ne不等于(!=); :$ne: db.col.find( name:$ne:'assad' )查询 name!='assad' 的文档$lt小于(120 的文档$gt大于(>); :$gt: db.col.find( score:$gt:120 )查询 score=); :$gte: db.col.find( score:$gte:120 )查询 score>= 120 的文档逻辑关系查询符逻辑关系查询符$and?and 和关系; $and:query1, query2 query1, query2 db.col.find( $and:city:'guangzhou', score:$gt:250 )db.col.find( city:'guangzhou', ?score:$gt:250 ?查询 city='guangzhou' and core>250 的文档?$oror 或关系; $or:query1, query2 db.col.find( $or:city:'guangzhou', score:$gt:250 )查询 city='guangzhou' or core>250 的文档?$nornor 异或关系; $nor:query1, query2 db.col.find( $nor:city:'guangzhou', score:$gt:250 )查询 (city='guangzhou' or core 250)的文档?$not非关系;db.col.find( $not:query $not:city:'guangzhou' )查询 city!= 'guanhgzhou' 的文档成员关系查询符成员关系查询符$all查询 key 匹配指定数组中的所有成员的结果; :$all: array db.col.find( tages:$all:'java','cpp','linux' )查询 tages 字段数组中含有 'java','cpp','linux' 全部这些值的文档$in?查询 key 匹配指定数组中任一个成员的结果; :$in: array db.col.find( tages:$in:'java','cpp','linux' )查询 tages 字段数组中含有 'java','cpp','linux' 中任意一个值的文档$nin查询 key 不匹配指定数组中任一个成员的结果; :$in: array db.col.find( tages:$in:'java','cpp','linux' )查询 tages 字段数组中不含有 'java','cpp','linux' 的文档.查询 key 指定下标成员,index 从 0 开始; :querydb.col.find( tages.1:java )查询 tages 字段数组第 2 个元素 = java' 的文档值属性查询符值属性查询符$size查询指定长度的数组 :$size:value db.col.find( tages:$size:3 )查询 tages 字段数组长度为 3 的文档,可以结合比较查询符使用$type查询指定类型的 key,具体类型列表见:https:/docs.mongodb.com/manual/reference/operator/query/type/index.html :$type: typecode db.col.find( title:$type:2 )查询 title 类型为 String 的文档$exit查询指定存在条件的 key 的文档db.col.find( school:$exits:false s :$exists: )查询不存在 school 字段的所有文档null其实不是操作符,是作为空值的占位符 :null :$in:null db.col.find( school:null )查询 school 字段不存在,或者 school 字段值为空的文档db.col.find( school:$in:null, $exists:true )查询 school 字段存在,但是值为空的文档$regex对字符串进行正则匹配,使用 perl 兼容表达式,可以用达到类似 SQL like 子句的效果; :$regex:pattern, $options:ops 其中 $options 用于修饰 regex,参数如下:-i:忽略大小写;-x:强制对没有标注 n 的字符串分行;- s:pattern 中的点号匹配所有字符(包括换行符);-x:忽略 pattern 中没有转义的特殊字符;db.col.find( name:$regix:“a*“ )db.col.find( name:/a*/ )查询 name 以 a 开头的文档db.col.find( name:$regex: “a*“, $options:'i' )db.col.find( name:/a*/i )查询 name 以 a 开头的文档,或略大小写$where使用任意 JavaScript 作为查询的一部分,包括 Js 表达式和 Js 闭包; $where: javascript-operation 在 Js 表达式中,使用 this,obj 指代每个文档对象db.col.find( $where: “this.score > this.salary “ )db.col.find( $where: “obj.score = this.salary“ )db.col.find( $where:function() return (this.score > this.salary ) )查询 col 中所有 score > salary 的文档;? 1> use testdb ? 1# 查询 testdb.articles 集合中 author=“assad“ 的文档 ? 1> db.articles.find( author:'assad' ) ? 1? ? 1# 查询 likes > 1000 的文档 天地棋牌 http:/www.dadiqipaigw.cn ? 1> db.articles.find( likes:$gt:1000 ) ? 1? ? 1# 查询 likes 大于 1000 ,小于 1500 的文档 ? 1> db.artciles.find( likes:$gt:1000, $lt:1500 ) ? 1? ? 1# 查询 author=“assad“ 同时 likes > 2000 的文档 ? 1> db.articles.find( author:'assad', likes:$gt:2000 ) ? 1? ? 1# 查询 authoer=“assad“ 或 “vancy“ 的文档 ? 1> db.articles.find( author:$in:'assad','vancy' ) ? 1? ? 1# 查询 tages 数组同时含有 'java','groovy' 的文档 ? 1> db.articles.find( tages: $all:'java','groovy' ) ? 1? ? 1# 查询 title 中含有 'java' 字段查询返回结果处理查询返回结果处理使用使用 find()find() 函数的函数的 projectionprojection 参数限定返回键参数限定返回键? 1# 查询 testdb.article 集合中所有的文档,只返回 title,author,这 2 个键(默认 会返回 _id 键)? 1> db.articles.find( , title:1, author:1 ) ? 1 “_id“ : ObjectId(“5a83c281a04c12209d79eea3“),“title“ : “groovy refrence“,“author“ : “assad“ ? 1 “_id“ : ObjectId(“5a83c5a0a04c12209d79eea4“),“title“ : “spring refrence“,“author“ : “alex“ ? 1? ? 1# 同上,不返回 _id 键 ? 1> db.articles.find( , title:1, author:1, _id:0 ) ? 1 “title“ : “groovy refrence“, “author“ : “assad“ ? 1 “title“ : “spring refrence“, “author“ : “alex“ $slice$slice 操作符操作符使用 $slice 操作符可以限定返回的文档的个数;? 1# 返回前 20 个文档 ? 1> db.articles.find( , _id:$slice:20 ) ? 1# 返回包含有 titles 的前 20 个文档 ? 1> db.articles.find( , titles:$slice:20 ) ? 1? ? 1# 返回包含有 titles 从第 20 项之后的 10 项; ? 1> db.articles.find( , titles:$slice: 20, 10 ) ? 1# 返回包含有 titles 从倒数第 20 项之后的 10 项; ? 1> db.articles.find( , titles:$slice: -20, 10 )skip()skip(),limit()limit() 方法方法以上使用 $slice 操作符限制显示结果数量,可以使用 skip(),limit() 函数来代替;? 1# 返回前 2