MongoDB常用操作

数据库的基本操作

use db_name

创建数据库

db

查看当前连接的数据库

show dbs

显示所有数据库,不显示空数据库

db.dropDatabase()

删除当前数据库


集合的基本操作

show collections

显示所有集合

db.collection_name.drop()

删除集合

db.createCollection(name,args)

创建集合并使用args作为初始文档

db.GPA.insert([
... {
... name:"王威龙",
... email:"[email protected]"
... }])

向集合GPA中插入数据

db.GPA.save([ { name:"王威龙1",
email:"[email protected]" }])

插入数据中,如果GPA集合不存在会自动创建

doc=({key:value,key:[{key:value,key:value}]})
db.collection_name.insert(doc)

插入预定义文档


数据查询

db.GPA.find({"name":"王威龙"}).pretty()

输出集合中符合参数的数据

db.collection_name.find()

不带参数返回集合中所有数据

db.collection_name.find().pretty()

使输出结果更美观

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

当参数中有多个键值对即视为AND查询操作

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

OR查询操作

db.collection_name.find({key1:value1, $or: [ {key2:value2},{key3:value3} ] })

OR AND 联立查询

key: {$gt:10}

key对应的value 大于 10

数据修改

db.collection_name.update({{key:value},{$set: {key1:value1}}},options)

更新键值对,option可为{multi:true},修改集合中的所有文档

db.collection_name.save({_id:Objectid,new_data})

替换已存在的文档

db.collection_name.remove({key_value})

删除符合条件的数据

条件操作符

$gt:1

大于1

说明
$gt 大于
$lt 小于
$lte 小于等于
$gte 大于等于
$ne 不等于

$type

*  双精度型-1
*  字符串-2
* 对象-3
* 数组-4
* 二进制数据-5
* 对象ID-7
* 布尔类型-8
* 数据-9
* 空-10
* 正则表达式-11
* JS代码-13
* 符号-14
* 有作用域的JS代码-15
* 32位整型数-16
* 时间戳-17
* 64位整型数-18
* Min key-255
* Max key-127

限制语句

db.collection_name.find().limit(n)

只读取查找到的前n个记录

db.collection_name.find().skip(n)

忽略读取到的前n条

db.collection_name.find().sort({key:1|-1})

对结果排序,1表示升序排列,-1代表降序排列

索引-ensureIndex()

db.collection_name.ensureIndex({key:value},options)

建立索引,option参数如下

参数 类型 描述
background Boolean 建立索引要不要阻塞其他数据库操作,默认为false
unique Boolean 建立的索引是否唯一,默认false
name string 索引的名称,若未指定,系统自动生成
dropDups Boolean 建立唯一索引时,是否删除重复记录,默认flase
sparse Boolean 对文档不存在的字段数据不启用索引,默认false
expireAfterSeconds integer 设置集合的生存时间,单位为秒
v index version 索引的版本号
weights document 索引权重值,范围为1到99999
default-language string 默认为英语
language_override string 默认值为 language

聚合

db.collection_name.aggregate({options})

options参数如下

* $match:查询,跟find一样;
* $limit:限制显示结果数量;
* $skip:忽略结果数量;
* $sort:排序;
* $group:按照给定表达式组合结果。

聚合表达式

名称 描述
$sum 计算总和
$avg 计算平均值
$min和$max 计算最小和最大值
$push 在结果文档中插入值到一个数组
$addToSet 在结果文档中插入值到一个数组,但不创建副本
$first 根据资源文档的排序获取第一个文档数据
$last 根据资源文档的排序获取最后一个文档数据

管道

$project:修改输入文档的结构。可以用来重命名、增加或删除域,也可以用于创建计算结果以及嵌套文档。
\$match:用于过滤数据,只输出符合条件的文档。$match使用MongoDB的标准查询操作。
$limit:用来限制MongoDB聚合管道返回的文档数。
$skip:在聚合管道中跳过指定数量的文档,并返回余下的文档。
$unwind:将文档中的某一个数组类型字段拆分成多条,每条包含数组中的一个值。
$group:将集合中的文档分组,可用于统计结果。
$sort:将输入文档排序后输出。
$geoNear:输出接近某一地理位置的有序文档。

原子操作

{$set:{field:value}}

指定一个键并更新键值,若不存在就创建

{$unset:{field:true}}

删除一个键

{$inc :{field:value}}

对文档的某个值为数字型的键进行增减操作

{$push:{field:value}}

把value追加到field,field一定是数组类型,如果field不存在,新增一个

{$pushAll:{field:value_array}}

同上,一次多值

{$pull:{field:value}}

从数组field中删除一个等于value的值

{$addToSet:{field:value}}

增加value到数组中

{$pop:{field:1}}

删除数组中的第一个或最后一个元素

{$rename:{old_name:new_name}}

修改字段名称

{$bit:{field:{and:5}}}

位操作

查询分析

explain()

提供查询信息使用索引和查询统计

结果中字段解释:

  • indexOnly:为 true ,表示我们使用了索引;
  • cursor:因为这个查询使用了索引,MongoDB中索引存储在B树结构中,所以这是也使用了BtreeCursor类型的游标。如果没有使用索引,游标的类型是BasicCursor。这个键还会给出你所使用的索引的名称,你通过这个名称可以查看当前数据库下的system.indexes集合(系统自动创建)来得到索引的详细信息;
  • n:当前查询返回的文档数量;
  • nscanned/nscannedObjects:表明当前这次查询一共扫描了集合中多少个文档,我们的目的是,让这个数值和返回文档的数量越接近越好;
  • millis:当前查询所需时间,毫秒数;
  • indexBounds:当前查询具体使用的索引。

hint()

强迫mongoDB使用一个指定的索引

你可能感兴趣的:(MongoDB常用操作)