MongoDB学习记录

MongoDB

$equals 等于 $gt 大于 $gte 大于等于 $lt 小余 $lte 小余等于 $ne 不等于 $in 在数组中 $nin 不在数组中

概念

SQL术语/概念 MongoDB术语/概念 解释/说明
database database 数据库
table collection 数据库表/集合
row document 数据记录行/文档
column field 数据字段/域
index index 索引
table joins 表连接,MongoDB不支持
primary key primary key 主键,MongoDB自动将_id字段设置为主键

创建数据库

use DATABASE_NAME

如果数据库不存在,则创建,否则切换指定数据库

删除数据库

db.dropDatabase()

删除当前数据库

删除集合

db.collection_name.drop()  删除指定集合

插入文档

db.collection_name.indert(document)

db.user.insert({name:'张三',age:22})

如果集合不存在,则创建

save()方法也可以创建,如果不指定_id则创建,指定_id则更新

更新文档

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

save(),根据_id更新

db.collection.save(
   <document>,
   {
     writeConcern: <document>
   }
)
  • document : 文档数据。
  • writeConcern :可选,抛出异常的级别。

删除文档

remove()

MongoDB数据更新可以使用update()函数。在执行remove()函数前先执行find()命令来判断执行的条件是否正确,这是一个比较好的习惯。

db.collection.remove(
   <query>,
   {
     justOne: <boolean>, //只删除一条,默认false
     writeConcern: <document>
   }
)

查询文档

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

条件查询

  • 等于 {key:value}
  • 小于 {key:{$lt:value}}
  • 小于或等于 {key:{$lte:value}}
  • 大于 {key:{$gt:value}}
  • 大于或等于 {key:{$gte:value}}
  • 不等于 {key:{$ne:value}}

or查询 $or

db.user.find({$or:[{name:"张三"},{name:"李四"}]})

and 和 or结合

db.user.find({age:23,$or:[{name:"张三"},{name:"李四"}]})
age是23人名为张三或者李四的

$equals 等于 $gt 大于 $gte 大于等于 $lt 小余 $lte 小余等于 $ne 不等于 $in 在数组中 $nin 不在数组中

$type 操作符

类型匹配

header 1 header 2
row 1 col 1 row 1 col 2
row 2 col 1 row 2 col 2
类型 数字 备注
Double 1
String 2
Object 3
Array 4
Binary data 5
Undefined 6 已废弃。
Object id 7
Boolean 8
Date 9
Null 10
Regular Expression 11
JavaScript 13
Symbol 14
JavaScript (with scope) 15
32-bit integer 16
Timestamp 17
64-bit integer 18
Min key 255 Query with -1.
Max key 127
db.user.find({name:{$type:2}}) //查询name为String的数据

Limit()

指定数量的数据记录

db.COLLECTION_NAME.find().limit(NUMBER)
db.user.find({name:{$type:2}}).limit(2)

Skip()

跳过指定数量的数据

db.COLLECTION_NAME.find().limit(NUMBER).skip(NUMBER)
db.user.find({name:{$type:2}}).limit(1).skip(1)//显示第二条,跳过第一条

排序 sort()

sort()方法可以通过参数指定排序的字段,并使用 1 和 -1 来指定排序的方式,其中 1 为升序排列,而-1是用于降序排列。

db.COLLECTION_NAME.find().sort({KEY:1})
db.user.find().sort({age:-1})//按年龄降序

创建索引 ensureIndex()

索引通常能够极大的提高查询的效率,如果没有索引,MongoDB在读取数据时必须扫描集合中的每个文件并选取那些符合查询条件的记录。

索引是特殊的数据结构,索引存储在一个易于遍历读取的数据集合中,索引是对数据库表中一列或多列的值进行排序的一种结构

db.COLLECTION_NAME.ensureIndex({KEY:1})
Key需要创建索引的字段,1按升序创建 -1按降序创建

ensureIndex() 方法中你也可以设置使用多个字段创建索引(关系型数据库中称作复合索引)
db.col.ensureIndex({"title":1,"description":-1})

可选参数

Parameter Type Description
background Boolean 建索引过程会阻塞其它数据库操作,background可指定以后台方式创建索引,即增加 “background” 可选参数。 “background” 默认值为false。
unique Boolean 建立的索引是否唯一。指定为true创建唯一索引。默认值为false.
name string 索引的名称。如果未指定,MongoDB的通过连接索引的字段名和排序顺序生成一个索引名称。
dropDups Boolean 在建立唯一索引时是否删除重复记录,指定 true 创建唯一索引。默认值为 false.
sparse Boolean 对文档中不存在的字段数据不启用索引;这个参数需要特别注意,如果设置为true的话,在索引字段中不会查询出不包含对应字段的文档.。默认值为 false.
expireAfterSeconds integer 指定一个以秒为单位的数值,完成 TTL设定,设定集合的生存时间。
v index version 索引的版本号。默认的索引版本取决于mongod创建索引时运行的版本。
weights document 索引权重值,数值在 1 到 99,999 之间,表示该索引相对于其他索引字段的得分权重。
default_language string 对于文本索引,该参数决定了停用词及词干和词器的规则的列表。 默认为英语
language_override string 对于文本索引,该参数指定了包含在文档中的字段名,语言覆盖默认的language,默认值为 language.
db.user.ensureIndex({name: 1, age: 1}, {background: true})

聚合(aggregate()) 数据处理

主要用于处理数据(诸如统计平均值,求和等),并返回计算后的数据结果

db.COLLECTION_NAME.aggregate(AGGREGATE_OPERATION)

  转载请注明: And Lau MongoDB学习记录

 上一篇
Https传输过程 Https传输过程
第一次HTTP请求 客户端向服务器发起HTTPS请求,连接到服务器的443端口 服务器端有一个密钥对,即公钥和私钥,是用来进行非对称加密使用的,服务器端保存着私钥,不能将其泄露,公钥可以发送给任何人。 服务器将自己的公钥发送给客户端 客户端
2018-06-21
本篇 
MongoDB学习记录 MongoDB学习记录
MongoDB $equals 等于 $gt 大于 $gte 大于等于 $lt 小余 $lte 小余等于 $ne 不等于 $in 在数组中 $nin 不在数组中 概念 SQL术语/概念 MongoDB术语/概念 解释/说
2017-09-30
  目录