mongoDB
mongoDB
操作数据库
-
创建、切换
use 数据库名
切换数据库,如不存在就创建一个新的数据库。
use test
-
删除
db.dropDatabase()
删除数据库
-
查看
show dbs
查看当前的数据库
操作集合
- 查看集合
show tables
查看当前数据库中的集合 - 创建集合
db.集合名.insert()
向集合里插入文档,如集合不存在创建一个集合 - 删除集合
db.集合名.drop()
删除当前数据库中的集合
操作文档
-
查看集合里的文档
db.集合名.find()
查看集合中的全部文档 -
查看第一个文档
db.集合名.find
-
查看某个文档
db.集合名.find({查询条件})
查询符合条件的文档
db.集合名.find({content: /jay/})
查询 content 包含 ‘jay’ 的文档
db.集合名.find({content: /^jay/})
查询 content 以 ‘jay’ 开头的文档
db.集合名.find({content: /jay$/})
查询 content 以 ‘jay’ 结尾的文档 -
插入文档
db.集合名.insert(doc)
-
更新文档(覆盖)
db.集合名.update({查询条件}, {更新内容})
更新符合条件的文档 -
更新文档(添加)
使用操作符$set
db.集合名.update({查询条件}, {操作符: {key: value}})
修改某个 key 的 value,如不存在就添加
db.集合名.update({查询条件}, {$unset: {key: value}})
删除某个 key 和 value
操作符
条件操作符 | 意义 |
---|---|
$gt(greater than) | 大于 |
$gte(gt equal) | 大于等于 |
$lt(less than) | 小于 |
$lte(lt equal) | 小于等于 |
$eq(equal) | 等于 |
$ne(not eq) | 不等于 |
$in | 包含 |
$nin | 不包含 |
逻辑操作符 | 意义 |
---|---|
$exists | 存在 |
$not | 不存在 |
$or | 或者 |
$and | 和 |
$mod | 求模 |
$where | 位置 |
数组操作符 | 意义 |
---|---|
$size | 匹配数组长度大小 |
$all | 匹配数组字段中包含指定 Value 的文档 |
常见查询
查询 content 包含 ‘jay’ 的文档
db.集合名.find({content: /jay/})
查询 content 以 ‘jay’ 开头的文档
db.集合名.find({content: /^jay/})
查询 content 以 ‘jay’ 结尾的文档
db.集合名.find({content: /jay$/})
查询 content 存在 info 属性的文档
db.集合名.find({'content.info': {exists: true}})
查询 content 包含 jay 或者 kang 的文档
db.集合名.find({content: {$in: ['jay', 'kang']}})
查询 content 不包含 jay 或者 kang 的文档
db.集合名.find({content: {$nin: ['jay', 'kang']}})
查询符合条件文档中的 name 和 age 字段
db.集合名.find({}, {name: true, age: 1})
查询符合条件文档返回中不包含 name 和 age 字段
db.集合名.find({}, {name: false, age: 0})
查询 age 大于 18 的文档
db.集合名.find({age: {$gt: 18}})
db.集合名.find({$where:'this.age > 18'})
db.集合名.find({'this.age > 18'})
查询 age 大于等于 18 且小于等于 30 的文档
db.集合名.find({age: {$gte: 18, $lte: 30}})
查询 name 不为 ‘jay’ 的文档
db.集合名.find({name: {$ne: 'jay'}})
查询 date 大于 2019 年 1 月 1 日,小于 2019 年 12 月 31 日的文档
db.集合名.find({date: {$gt: new Date(2019,0,1), $lt: new Date(2019,11,31)}})
查询文档数量
db.集合名.find().count()
查询 age 按降序排列的文档
db.集合名.find().sort({age: -1})
查询前 5 条文档
db.集合名.find().limit(5)
查询 5 条之后的文档
db.集合名.find().skip(5)
查询第 10 条到第 20 条文档
db.集合名.find().limit(20).skip(10)