MongDB的基本操作

一、建库

use DATABASE_NAME

此时在列表中还查不到该库,需插入数据才能看到。

这里没有建表,会自动生成lttest表。

MongoDB 中默认的数据库为 test,如果你没有创建新的数据库,集合将存放在 test 数据库中。

二、删库

use DATABASE_NAME
db.dropDatabase()

三、创建集合

db.createCollection(NAME, OPTIONS)

NAME:集合名称

OPTIONS:集合参数

字段类型描述
capped布尔(可选)如果为 true,则创建固定集合。固定集合是指有着固定大小的集合,当达到最大值时,它会自动覆盖最早的文档。
当该值为 true 时,必须指定 size 参数。
autoIndexId布尔(可选)如为 true,自动在 _id 字段创建索引。默认为 false。
size数值(可选)为固定集合指定一个最大值(以字节计)。
如果 capped 为 true,也需要指定该字段。
max数值(可选)指定固定集合中包含文档的最大数量。

四、删除集合

db.COLLECTION.drop()

 

五、插入文档

db.COLLECTION_NAME.insert(DECUMENT)

3.2以后还有以下两种语法可以插入文档:

db.DOCUMENT_NAME.insertOne(DOCUMENT)    :向指定集合中插入一条文档数据
db.DOCUMENT_NAME.insertMany([DOCUMENT])    :向指定集合插入多条文档数据


六、更新数据

db.DOCUMENT_NAME.update(
   <query>,
   <update>,
   {
      upsert:<boolean>,
      multi:<boolean>,
      writeConcern:<document>
   }
)

query:更新数据的查询条件

update:更新操作符(如$,$inc,$set)+需要修改的数据。可以理解为sql中的set

upsert:可选,如果不存在update的记录,true会插入一条新的记录。默认是false

multi:可选,true会更新全部查询出来的记录。默认false,只更新查出来的第一条

writeConcern:可选,抛出异常的级别


save方法会根据“_id”去替换文档。

db.DOCUMENT_NAME.save(
   DOCUMENT,
   {
      writeConcern:<document>
   }
)

DOCUMENT:替换后的文档

writeConcern:可选,抛出异常的级别


七、删除文档

db.DOCUMENT_NAME.remove(
   <query>,
   {
      justOne : <boolean>,
      writeConcern : <document>
   }
)

query:可选,需删除文档的查询条件

justOne:可选,设为true或1,只删除第一个文档。默认false

writeConcern:可选,抛出异常级别。

八、查询文档

db.DOCUMENT_NAME.find(<query>,<projection>)[.pretty()]
db.DOCUMENT_NAME.findOne(<query>,<projection>)[.pretty()]

query:可选,查询条件

projection:可选,用于投影操作符指定返回的键。查询时返回文档中所有键值时,忽略此参数

.pretty():方法可以以格式化来显示所有文档

projection指定_id为false或0,则过滤掉_id不显示:


projection指定_id为true或1,则只显示_id:


1、MongoDB条件操作符

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



2、MongoDB关系运算符

    and:find方法可以传入多个参数,用逗号隔开。

db.col.find({key1:value1, key2:value2}).pretty()

    or:使用关键字$or

db.col.find(
   {
      $or: [
         {key1: value1}, {key2:value2}
      ]
   }
).pretty()

3. MongoDB的$type操作符

    $type操作符是基于BSON类型来检索集合中匹配的数据类型,并返回结果。

这里我们把tuotuo的年龄改成String字符串,用于做区别

数据类型与$type编号对应关系如下:

类型数字备注
Double1 
String2 
Object3 
Array4 
Binary data5 
Undefined6已废弃。
Object id7 
Boolean8 
Date9 
Null10 
Regular Expression11 
JavaScript13 
Symbol14 
JavaScript (with scope)15 
32-bit integer16 
Timestamp17 
64-bit integer18 
Min key255Query with -1.
Max key127 

4. MongoDB的limit方法

db.COLLECTION_NAME.find().limit(NUMBER)

    MongoDB的limit方法可以限制查询结果的条数。


5、MongoDB的skip方法

    MongoDB的skip方法用于跳过指定数量条数的数据。可以与limit配合实现分页。

db.COLLECTION_NAME.find().limit(NUMBER).skip(NUMBER)

6、MongoDB的sort方法

        排序。

db.COLLECTION_NAME.find().sort({KEY:1})

        KEY指定排序的字段,使用1(升序)和-1(降序)执行排序方式。


7. 索引

        如果没有索引,MongoDB要扫描集合中的每个文档,并符合查询条件的记录,效率很低。

        索引是特殊的数据结构,存在一个易于遍历的数据集合中,是对集合中的一列或多列(符合索引)进行排序的一种数据结构。

        MongoDB使用ensureIndex()方法创建索引。

db.COLLECTION_NAME.ensureIndex({KEY:1},<options>)

options:可选参数,如下

ParameterTypeDescription
backgroundBoolean建索引过程会阻塞其它数据库操作,background可指定以后台方式创建索引,即增加 "background" 可选参数。 "background" 默认值为false
uniqueBoolean建立的索引是否唯一。指定为true创建唯一索引。默认值为false.
namestring索引的名称。如果未指定,MongoDB的通过连接索引的字段名和排序顺序生成一个索引名称。
dropDupsBoolean在建立唯一索引时是否删除重复记录,指定 true 创建唯一索引。默认值为 false.
sparseBoolean对文档中不存在的字段数据不启用索引;这个参数需要特别注意,如果设置为true的话,在索引字段中不会查询出不包含对应字段的文档.。默认值为 false.
expireAfterSecondsinteger指定一个以秒为单位的数值,完成 TTL设定,设定集合的生存时间。
vindex version索引的版本号。默认的索引版本取决于mongod创建索引时运行的版本。
weightsdocument索引权重值,数值在 1 到 99,999 之间,表示该索引相对于其他索引字段的得分权重。
default_languagestring对于文本索引,该参数决定了停用词及词干和词器的规则的列表。 默认为英语
language_overridestring对于文本索引,该参数指定了包含在文档中的字段名,语言覆盖默认的language,默认值为 language.


8. 聚合

        MongoDB可以使用aggregate()方法处理数据(求平均值,求和等)

db.COLLECTION_NAME.aggregate(AGGREGATE_OPERATION)

AGGREGATE_OPERATION:聚合表达式

表达式描述实例
$sum计算总和。db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$sum : "$likes"}}}])
$avg计算平均值db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$avg : "$likes"}}}])
$min获取集合中所有文档对应值得最小值。db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$min : "$likes"}}}])
$max获取集合中所有文档对应值得最大值。db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$max : "$likes"}}}])
$push在结果文档中插入值到一个数组中。db.mycol.aggregate([{$group : {_id : "$by_user", url : {$push: "$url"}}}])
$addToSet在结果文档中插入值到一个数组中,但不创建副本。db.mycol.aggregate([{$group : {_id : "$by_user", url : {$addToSet : "$url"}}}])
$first根据资源文档的排序获取第一个文档数据。db.mycol.aggregate([{$group : {_id : "$by_user", first_url : {$first : "$url"}}}])
$last根据资源文档的排序获取最后一个文档数据db.mycol.aggregate([{$group : {_id : "$by_user", last_url : {$last : "$url"}}}])
通过age分组求总和:


9. 管道

Linux中可以用管道将上一个命令的结果作为参数给下一个命令。

MongoDB的聚合管道将文档在一个管道处理完毕后将结果传递给下一个管道处理。管道操作时可以重复的。

聚合框架中常用的操作有:

    $project :修改输出的文档结构,可以重命名、增加、删除字段,也可以用于创建计算结果以及嵌套文档。(等同于find()的第二个JSON参数)

    $match:用于过滤数据,只输出符合条件的文档。

    $limit:用于限制文档数。

    $skip:跳过指定的文档,返回剩下的文档。

    $unwind:将文档中的某一数组类型的字段拆成多条,每条包含数组中的一个值。

    $group:将集合中的文档分组,用于统计结果。

    $sort:排序。

    $geoNear:输出接近某一地理位置的有序文档。


查age>1,<25的总记录数:



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
校园悬赏任务平台对字典管理、论坛管理、任务资讯任务资讯公告管理、接取用户管理、任务管理、任务咨询管理、任务收藏管理、任务评价管理、任务订单管理、发布用户管理、管理员管理等进行集中化处理。经过前面自己查阅的网络知识,加上自己在学校课堂上学习的知识,决定开发系统选择小程序模式这种高效率的模式完成系统功能开发。这种模式让操作员基于浏览器的方式进行网站访问,采用的主流的Java语言这种面向对象的语言进行校园悬赏任务平台程序的开发,在数据库的选择上面,选择功能强大的Mysql数据库进行数据的存放操作。校园悬赏任务平台的开发让用户查看任务信息变得容易,让管理员高效管理任务信息。 校园悬赏任务平台具有管理员角色,用户角色,这几个操作权限。 校园悬赏任务平台针对管理员设置的功能有:添加并管理各种类型信息,管理用户账户信息,管理任务信息,管理任务资讯公告信息等内容。 校园悬赏任务平台针对用户设置的功能有:查看并修改个人信息,查看任务信息,查看任务资讯公告信息等内容。 系统登录功能是程序必不可少的功能,在登录页面必填的数据有两项,一项就是账号,另一项数据就是密码,当管理员正确填写并提交这二者数据之后,管理员就可以进入系统后台功能操作区。项目管理页面提供的功能操作有:查看任务,删除任务操作,新增任务操作,修改任务操作。任务资讯公告信息管理页面提供的功能操作有:新增任务资讯公告,修改任务资讯公告,删除任务资讯公告操作。任务资讯公告类型管理页面显示所有任务资讯公告类型,在此页面既可以让管理员添加新的任务资讯公告信息类型,也能对已有的任务资讯公告类型信息执行编辑更新,失效的任务资讯公告类型信息也能让管理员快速删除。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值