1、db.collectionName 代表集合对象
1、获取集合对象命令:
db.getCollection('collection_name')
示例:
db.getCollection('class0').insert({name:'悟空',age:1700})
2、查找操作
1、查找即合理的全部文档:
db.collectionName.find() ---相当于---> SQL中select * from tableName2、find(query,field):
功能:查找所有符合条件的文档
参数:
query: 筛选条件 相当于MySQL中where字句
field: 展示的域 相当于MySQL中select展示部分
返回:
所有查找到的内容
3、field参数:
选择要展示的域 传一组键值对键:
表示域名
值:
表示是否显示该域 0 表示不显示,1 表示显示
总结:
1、如果某个域给定0 则表示不显示该域,而其他的域均显示
如果某个域给定1 则表示显示该域,其他的域都不显示
2、_id永远默认为显示,除非设置为0
3、除_id外其他域 必须拥有相同是设置,全为0或者全为1
4、如果不谢该参数则显示所有内容
示例:
db.class0.find({},{_id:0,name:1,age:1})
4、query参数
功能:以键值对的形式给出查找条件
示例:
# 查找年龄 17
db.class0.find({age:17},{_id:0})
注: 如果不写第一个参数则表示查找所有内容
5、findone()函数
功能参数和find() 完全相同,只是只返回第一条查找到的文档示例:
db.class0.findOne({age:17},{_id:0})
6、query的更多用法
1、操作符
使用$符号注明的一个特殊字符串,表示一定的含义示例:
$lt:表示小于
2、比较操作符
1、$eq
等于示例:db.class0.find({age:{$eq:17},{_id:0})
筛选年龄等于17的
等同于 db.class0.find({age:17},{_id:0})
2、$lt
小于 <示例:
db.class0.find({name:{$lt:'Tom'}},{_id:0})
注:
MongoDB中字符串也可以比较大小
3、$lte
小于等于 <=示例:
db.class0.find({age:{$lte:17}},{_id:0})
4、$gt
大于 >示例:
db.class0.find({age:{$gt:17}},{_id:0})
5、$gte
大于等于 >=示例:
db.class0.find({age:{$gte:17}},{_id:0})
6.$ne
不等于 !=示例:
db.class0.find({age:{$ne:17}},{_id:0})
注:如果一个文档没有这个age域则显示为不等于
7、$in
包含示例:
db.class0.find({age:{$in:[16,17,18,19]}},{_id:0})
8、$nin
不包含示例:
db.class0.find({age:{$nin:[16,17,18,19]}},{_id:0})
3、逻辑操作符
1、$and
逻辑与示例:
1、年龄小于19并且性别为男
db.class0.find({age:{$lt:19},sex:'m'},{_id:0})
2、年龄小于19并且大于15
db.class0.find({age:{$lt:19,$gt:15}},{_id:0})
3、and 示例
db.class0.find({$and:[{age:16},{name:'Lucy'}]},{_id:0})
2、$or
逻辑或示例:
db.class0.find({$or:[{age:{$lt:22}},{name:'悟空'}]},{_id:0})
db.class0.find({$or:[{age:{$lt:18}},{age:{$gte:30}}]},{_id:0})
3、$not
逻辑非示例:
db.class0.find({age:{$not:{$eq:17}}},{_id:0})
4、$nor
既不也不表示列表集合中的条件都不具备
示例:
db.class0.find({$nor:[{age:{$gt:18}},{sex:'m'}]},{_id:0})
年龄既不大于18也不是女的
5、条件混合
年龄小于20 或者 姓名为阿红 并且 性别为女db.class0.find({$and:[{$or:[{age:{$lt:20}},{name:'阿红'}]},{sex:'w'}]})
年龄小于等于17 或者 (姓名大于Tom 并且 年龄大于100)
db.class0.find({$or:[{age:{$lte:17}},{$and:[{name:{$gt:'Tom'}},{age:{$gt:100}}]}]})
7、数组查找
1、查看数组中包含某一项的
示例:db.class1.find({hobby:'吃'},{_id:0})
查找hobby中含有’吃‘的文档
2、$all
查找数组中同时包含多项的文档示例:
db.class1.find({hobby:{$all:['拍电影','代言']}},{_id:0})
查找hobby数组中既有拍电影,又有代言的文档
3、$size
查找数组元素个数为指定个数的文档示例:
db.class1.find({hobby:{$size:3}},{_id:0})
查找hobby数组中包含三项的文档
4、数组切片显示
$slice对数组切片显示
示例:
db.class1.find({hobby:{$size:3}},{_id:0,hobby:{$slice:2}})
查找hobby数组中包含三项的文档,并显示hobby数组的前两项
db.class1.find({hobby:{$size:3}},{_id:0,hobby:{$slice:[1,2]}})
查找hobby数组中包含三项的文档,并跳过hobby数组的第一项显示hobby数组的后两项
8、其他查找方法
1、$exists
判断一个域是否存在示例:
db.class0.find({sex:{$exists:true}},{_id:0})
查找存在sex域的文档
db.class0.find({sex:{$exists:false}},{_id:0})
查找不存在sex域的文档
注:$exists的值为布尔类型
2、$mod
做除数余数查找示例:
db.class0.find({age:{$mod:[2,1db.class0.distinct('age')]}},{_id:0})
查找年龄是奇数的文档
db.class0.find({age:{$mod:[3,0]}},{_id:0})
查找年龄能被三整除的文档
3、$type
查找指定数据类型的文档示例:
db.class0.find({age:{$type:1}},{_id:0})
查找age是整形的文档
db.class0.find({name:{$type:2}},{_id:0})
查找name是字符串的文档
Type | Number | Alias | Notes |
---|---|---|---|
Double | 1 | “double” | |
String | 2 | “string” | |
Object | 3 | “object” | |
Array | 4 | “array” | |
Binary data | 5 | “binData” | |
Undefined | 6 | “undefined” | Deprecated. |
ObjectId | 7 | “objectId” | |
Boolean | 8 | “bool” | |
Date | 9 | “date” | |
Null | 10 | “null” | |
Regular Expression | 11 | “regex” | |
DBPointer | 12 | “dbPointer” | |
JavaScript | 13 | “javascript” | |
Symbol | 14 | “symbol” | Deprecated. |
JavaScript (with scope) | 15 | “javascriptWithScope” | |
32-bit integer | 16 | “int” | |
Timestamp | 17 | “timestamp” | |
64-bit integer | 18 | “long” | |
Decimal128 | 19 | “decimal” | New in version 3.4. |
Min key | -1 | “minKey” | |
Max key | -127 | “maxKey” |
9、进一步信息筛选
1、destinct()功能:
查看一个集合中某个域值的覆盖范围
示例:
db.class0.distinct('age')
查看集合中age域的值都有哪些
10、对查找结果再操作
1、pretty()
功能:将查询结果格式化显示
示例:
db.class1.find().pretty()
2、limit(n)
功能:查询结果显示前n条
示例
db.class0.find().limit(3)
查询结果显示前三条
3、skip(n)
功能:显示时跳过前n条
示例:
db.class0.find({},{_id:0}).skip(3)
显示时跳过前三条
4、count()
功能:对查找结果计数统计
示例:
# 统计sex为m的文档数量
db.class0.find({sex:'m'},{_id:0}).count()
5、sort({键:1 / -1})
功能:对查找结果排序
参数:
1 表示按升序排列
-1 表示按降序排列
示例:
# 所有包含age的结果按age升序排列
db.class0.find({age:{$exists:true}},{_id:0}).sort({age:1})
复合排序
# 所有包含age的结果按age升序排列,如果age相同按那么降序排列
db.class0.find({age:{$exists:true}},{_id:0}).sort({age:1,name:-1})
6、函数的连续使用
示例:# 显示所有包含age的文档中age最小的3个
db.class0.find({age:{$exists:true}},{_id:0}).sort({age:1}).limit(3)
3、删除文档
格式:db.collectionName.remove(query,justOne)
功能:
删除制定的文档
参数:
query :筛选要删除的文档, 类似MySQL中where字句
用法同查找操作
justOne : 布尔类型 默认为false 表示删除所有筛选数据
如果赋值为true 则表示删除第一条符合的文档
示例:
#删除不包含age的文档和age大于100的文档
db.class0.remove({$or:[{age:{$exists:false}},{age:{$gt:100}}]})
# 删除第一个符合条件的文档
db.class0.remove({sex:{$exists:false}},true)
# 删除所有的文档
db.class1.remove({})