MongoDB SQL

MongoDB

MongoDB SQL

数据库

创建/转换数据库

  • 默认使用test
  • 使用该命令后,在集合或数据库后插入数据才开始真正创建数据库
use <DATABASE_NAME>

查看所有数据库

show dbs

显示当前使用的数据库

db

删除当前数据库

db.dropDatabase()

{ "dropped" : "test", "ok" : 1 }

集合

创建集合(插入文档时会自动创建集合)

  • collection_name:集合名称
  • options: 可选参数, 指定有关内存大小及索引的选项
    • capped(Boolean):(可选)如果为 true,则创建固定集合。固定集合是指有着固定大小的集合,当达到最大值时,它会自动覆盖最早的文档。当该值为 true 时,必须指定 size 参数。
    • autoIndexId(Boolean):(可选),如为 true,"id"自动创建索引,默认false。
    • size 数值 (可选)为固定集合指定一个最大值,以千字节计(KB)。如果 capped 为 true,必须指定该字段。
    • max 数值 (可选)指定固定集合中包含文档的最大数量。
      在插入文档时,MongoDB 首先检查固定集合的 size 字段,然后检查 max 字段。
db.createCollection(collection_name, options)

带参示例:
db.createCollection("mycol", { capped : true, autoIndexId : true, size : 6142800, max : 10000 } )

查看当前数据库下已有集合

show collections

删除指定集合

db.<collection_name>.drop()

文档

插入文档

db.<COLLECTION_NAME>.insert(document)

db.<COLLECTION_NAME>.save(document)

查看文档

  • query :可选,使用查询操作符指定查询条件
  • projection :可选,使用投影操作符指定返回的键。查询时返回文档中所有键值, 只需省略该参数即可(默认省略)。
db.<COLLECTION_NAME>.find(query, projection)

只返回一个文档
db.<COLLECTION_NAME>.findOne(query, projection)

pretty() 方法以格式化的方式来显示所有文档。
db.<COLLECTION_NAME>.find().pretty()

AND
db.<COLLECTION_NAME>.find({key1:value1,key2:value2}).pretty()

OR
db.<COLLECTION_NAME>.find(
   {
      $or: [
         {key1: value1}, {key2:value2}
      ]
   }
).pretty()


AND OR
db.<COLLECTION_NAME>.find(
   {key1:value1,key2:value2},
   {
      $or: [
         {key1: value1}, {key2:value2}
      ]
   }
).pretty()

按照类型查询 获取 title 为 String 的数据
db.<COLLECTION_NAME>.find({"title" : {$type : 'string'}})


获取指定条数数据
db.<COLLECTION_NAME>.find().limit(NUMBER)

跳过指定条数数据
db.<COLLECTION_NAME>.find().skip(NUMBER)

排序
1 升序
-1 降序
db.<COLLECTION_NAME>.find().sort({KEY:1})

TIPS:skip(), limilt(), sort()三个放在一起执行的时候,执行的顺序是先 sort(), 然后是 skip(),最后是显示的 limit()

如果你熟悉常规的 SQL 数据,通过下表可以更好的理解 MongoDB 的条件语句查询:

操作格式范例RDBMS中的类似语句
等于{:}db.col.find({“by”:“value”}).pretty()where by = ‘value’
小于{:{$lt:}}db.col.find({“likes”:{$lt:50}}).pretty()where likes < 50
小于或等于{:{$lte:}}db.col.find({“likes”:{$lte:50}}).pretty()where likes <= 50
大于{:{$gt:}}db.col.find({“likes”:{$gt:50}}).pretty()where likes > 50
大于或等于{:{$gte:}}db.col.find({“likes”:{$gte:50}}).pretty()where likes >= 50
不等于{:{$ne:}}db.col.find({“likes”:{$ne:50}}).pretty()where likes != 50

更新文档

  • query : update的查询条件,类似sql update查询内where后面的。
  • update : update的对象和一些更新的操作符(如 , , ,inc…)等,也可以理解为sql update查询内set后面的
  • upsert : (可选),这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。
  • multi : (可选),mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。
  • writeConcern :(可选),抛出异常的级别。
db.<COLLECTION_NAME>.update(
   <query>,
   <update>,
   {
     upsert: <boolean>,
     multi: <boolean>,
     writeConcern: <document>
   }
)

eg:
只修改第一个符格条件的
db.<COLLECTION_NAME>.update({'dbName':'MongoDB'},{$set:{'dbName':'Mongodb'}})

修改多条
db.<COLLECTION_NAME>.update({'dbName':'MongoDB'},{$set:{'dbName':'Mongodb'}}),{multi:true})

只更新第一条记录:
db.col.update( { "count" : { $gt : 1 } } , { $set : { "test2" : "OK"} } );

全部更新:
db.col.update( { "count" : { $gt : 3 } } , { $set : { "test2" : "OK"} },false,true );

只添加第一条:
db.col.update( { "count" : { $gt : 4 } } , { $set : { "test5" : "OK"} },true,false );

全部添加进去:
db.col.update( { "count" : { $gt : 5 } } , { $set : { "test5" : "OK"} },true,true );

全部更新:
db.col.update( { "count" : { $gt : 15 } } , { $inc : { "count" : 1} },false,true );

只更新第一条记录:
db.col.update( { "count" : { $gt : 10 } } , { $inc : { "count" : 1} },false,false );

删除文档

  • query :(可选)删除的文档的条件。
  • justOne : (可选)如果设为 true 或 1,则只删除一个文档,如果不设置该参数,或使用默认值 false,则删除所有匹配条件的文档。
  • writeConcern :(可选)抛出异常的级别。
db.<COLLECTION_NAME>.remove(
   <query>,
   {
     justOne: <boolean>,
     writeConcern: <document>
   }
)

索引

创建索引

db.<COLLECTION_NAME>.createIndex(keys, options)

单值索引
db.col.createIndex({"title":1})

复合索引
db.col.createIndex({"title":1,"description":-1})

keys:需要创建索引的字段
options:1升序,-1降序

查看集合索引

db.<COLLECTION_NAME>.getIndexes()

查看集合索引大小

db.<COLLECTION_NAME>.totalIndexSize()

删除集合所有索引

db.<COLLECTION_NAME>.dropIndexes()

删除指定索引

db.<COLLECTION_NAME>.dropIndexes("索引名称")

聚合函数

count()

集合中文档的数量

db.<COLLECTION_NAME>.count()

带有条件的
db.<COLLECTION_NAME>.count()
or
db.<COLLECTION_NAME>.find({}).count()

distinct()

返回指定字段下所有值的去重结果

db.<COLLECTION_NAME>.distinct(keys)
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值