mongodb-常用操作

show dbs 或者 show databases

创建 或 切换工作数据库(如果不存在就自动创建数据库)

use mydb

查看当前工作数据库

db

当前数据库中所有表

show collections

删除数据库 默认就是当前数据库

db.dorpDatabase()

数据库基础


显示所有数据库

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 : 此数据类型用于存储正则表达式

本文总阅读量