show dbs
或者 show databases
创建 或 切换工作数据库(如果不存在就自动创建数据库)
use mydb
查看当前工作数据库
db
当前数据库中所有表
show collections
删除数据库 默认就是当前数据库
数据库基础
显示所有数据库
show dbs
或者 show databases
创建 或 切换工作数据库(如果不存在就自动创建数据库)
use mydb
查看当前工作数据库
db
当前数据库中所有表
show collections
删除数据库 默认就是当前数据库
db.dorpDatabase()
MongoDB 中默认的数据库为 test,如果你没有创建新的数据库,集合将存放在 test 数据库中。
集合相关
创建一个 mycollection 的集合
db.createCollection("mycollection")
可以指定一些参数 创建log capped:true表示封顶模式 封顶模式是固定大小的集合,当它达到其最大大小,会自动覆盖最早的条目。如果指定true,则需要也指定size字段。
size最大存储字节, max最大记录数, size为主要的参考值。
db.createCollection("log", { capped : true, size : 5242880, max : 5000 } )
删除表db.COLLECTION_NAME.drop()
对比与数据库删除是
db.dropdatabase()
表的pretty输出 使输出格式更美观 相当于是格式工具
db.mycol.find().pretty()
insert与 save
insert 和save 都是插入一条数据,如果不存在都差不多。
这里的一样是id都一样,自己加入_id
但是如果以前一样的数据插入,save会覆盖。insert则会报错
文档的查询
查询所有数据
db.COLLECTION_NAME.find()
返回一条数据
db.mycol.findOne()
数值比较条件 > < 等
$lt表示小于 $lte小于等于
$gt表示大于 $gte表示大于等于
$ne表示不等于
{key:value}表示key=value条件
l表示lttle,g表示big e即equal
- 找到stu 表中年龄大于18的记录
db.stu.find({'age':{$gt:18}})
AND
使用时候 {条件1,条件2}
db.stu.find({x:{$gt:10},x:{$lt:20}})
查找学生表中x > 10 并且 x<20的数据
OR
查找x > 97 或者x小于3的数据
使用方式 find({ $or:[条件1,条件2] })
找出x>97 或者x<6的数据
db.stu.find({ $or:[{x:{$gt:97}}, {x:{$lt:6}}]})
and与 or一起使用
找出likes>50 并且 (”by”: “tutorials” 或者 “title”: “MongoDB Overview”)
db.mycol.find({
"likes": {
$gt: 50
},
$or: [
{
"by": "tutorials itcast"
},
{
"title": "MongoDB Overview"
}
]
}).pretty()
limit skip使用
显示10条数据
db.mylimit.find().limit(10)
前三条不要,第四条开始找出三个
db.myLimit.find().skip(3).limit(3)
##投影
投影意思是查询到的返回结果中,只选择必要的字段,而不是选择一个文档的整个字段。
key是键,1表示显示
多个字段显示用,号隔开
count
>db.COLLECTION_NAME.find({}).count()
或者
db.COLLECTION_NAME.count({})
给个第二种方法的例子
找出x>990的个数
> db.mylimit.count({x:{$gt:990}})
排序
按照key排序
1表示升序
-1表示降序
>db.COLLECTION_NAME.find().sort({KEY:1})
选出 x 降序排列后的 最后5要数据
db.mylimit.find().sort({x:-1}).limit(5)
distinct
>db.COLLECTION_NAME.distinct('key',{})
实例
找出likes > 20 的title 名字 结果会存放到一个数组中
db.mycol.distinct('title',{'likes':{'$gt':20}})
update
> db.myupdate.find()
{ "_id" : ObjectId("57fa45f4c5f80ce1ca465612"), "x" : 1 }
{ "_id" : ObjectId("57fa45f6c5f80ce1ca465613"), "x" : 1 }
{ "_id" : ObjectId("57fa45f8c5f80ce1ca465614"), "x" : 1 }
{ "_id" : ObjectId("57fa45ffc5f80ce1ca465615"), "x" : 2 }
{ "_id" : ObjectId("57fa4601c5f80ce1ca465616"), "x" : 2 }
更新x=1的数据为 x=2发现只有一个数据被修改
> db.myupdate.update({x:1},{x:2})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
如果找不到就不做操作
> db.myupdate.update({x:9},{x:11})
WriteResult({ "nMatched" : 0, "nUpserted" : 0, "nModified" : 0 })
如果加一个true表示不存在就插入
> db.myupdate.update({x:9},{x:11},true)
第一个false表示 不存在不插入,第二个true表示多条更新
注意:多条更新的时候必须用$set操作符
> db.myupdate.update({x:2},{$set:{x:999}},false,true)
找到所有999的数据,不存在不插入,加1
db.myupdate.update({x:999},{$inc:{x:1}},false,true)
remove
删除x = 6的一条数据
注意:默认删除满足条件的所有数据 删除前先count一下自己所删除数据量
> db.myupdate.remove({x:6})
删除1条
db.myupdate.remove({x:1},true)
删除所有条 默认满足条件所有条
db.myupdate.remove({x:1},false)
常用数据类型–附录
下表为MongoDB中常用的几种数据类型。
String : 这是最常用的数据类型来存储数据。在MongoDB中的字符串必须是有效的UTF-8。
Integer : 这种类型是用来存储一个数值。整数可以是32位或64位,这取决于您的服务器。
Boolean : 此类型用于存储一个布尔值 (true/ false) 。
Double : 这种类型是用来存储浮点值。
Min/ Max keys : 这种类型被用来对BSON元素的最低和最高值比较。
Arrays : 使用此类型的数组或列表或多个值存储到一个键。
Timestamp : 时间戳。这可以方便记录时的文件已被修改或添加。
Object : 此数据类型用于嵌入式的文件。
Null : 这种类型是用来存储一个Null值。
Symbol : 此数据类型用于字符串相同,但它通常是保留给特定符号类型的语言使用。
Date : 此数据类型用于存储当前日期或时间的UNIX时间格式。可以指定自己的日期和时间,日期和年,月,日到创建对象。
Object ID : 此数据类型用于存储文档的ID。
Binary data : 此数据类型用于存储二进制数据。
Code : 此数据类型用于存储到文档中的JavaScript代码。
Regular expression : 此数据类型用于存储正则表达式