对数据的curd
增
db.newcol.insert({"name", "张三"}) // id冲突会报错
db.newcol.save() // 更新数据, 不存在就插入 新版本已废弃 用 db.collection.insertOne() or db.collection.replaceOne()来代替
可以先
var document = ({name:'asdasd'})
然后
db.newcol.insert(document)这样操作
document还可以为对象数组
删
db.newcol.remove({"name", "张三"})
db.newcol.remove(
<query> 查询条件
<options>
)
options属性名 | 类型 | 描述 |
---|---|---|
justOne | bool(可为true 可为1) | 默认为false,删除满足条件的所有,true时只删除一个 |
writeConcern | document | 抛出异常的级别 |
查
db.order.find()
db.order.find({'name': '张三'})
db.order.find({'name': '张三'}).pretty() // 格式化查询出的数据
db.order.find({'name': /张/}) 含张 // 可使用正则查询
db.order.find({score: {$gt:60}}) score > 60的
db.order.find({score: {$gt:60, $lt:80}}) score > 60并且 < 80
// lt < lte <= gt > gte >= ne !=
db.order.find({'name': '张三', 'score':'60'}) // 多个条件相当于and
db.order.find({$or :[{'name': '张三'}, {'score':'60'}]}) // or
// 联表查询 $lookup
db.order.aggregate(
[
{
$lookup:
{
from:'targetTables', // 联合的第二个表
localField: 'name', // 本表想对比的值的属性名
foreignField: 'sku', // 联合表对应的属性名
as: 'demo' // 别名
}
}
]
)
改
db.newcol.update({"name": "张三"},{$set:{"name":"李四"}})
db.newcol.update(
<查询条件>, 类比sql where
<更新内容>, 类比sql upadate set
opations
)
options属性名 | 类型 | 描述 |
---|---|---|
upsert | bool | 当没有符合条件时,是否插入set后面的,true为插入 |
multi | bool | 默认为false 只更新查找到的第一条记录,为true就把查出来的多条更新 |
writeConcern | document | 抛出异常的级别 |
插入
对数据库的操作
创建数据库
use DATABASE_NAME // 如果数据库不存在就创建 如果存在就切换
为空的数据库不会显示在 show dbs中 需要往里面插入一条数据, 才会显示
数据库 --》 集合
数据 --》 文档(记录)
查看所有数据库
show dbs // 查看所有数据库
db // 显示当前使用数据库
删除数据库
db.dropDatabase() // 删除当前数据库
对集合的操作
创建集合
db.createCollection(name, options)
db.createCollection('example',{
capped:true,
size: 2048000, // 2048000 KB
max: 1000
})
options:
属性名 | 类型 | 描述 | |||
---|---|---|---|---|---|
capped | 布尔 | 为true 创建固定集合,达到最大值会自动覆盖最早的文档 | |||
autoIndexId | 布尔 | 3.2后不支持 为true 自动在_id字段创建索引,默认为false | |||
size | 数值 | 为固定集合创建一个最大值 KB为单位 | |||
max | 数值 | 指固定集合中包含文档的最大数量 |
插入文档时, MongoDB 首先检查固定集合的size字段 ,然后检查max字段
查看集合
show tables or show collections
删除集合
db.collection.drop()
limit,skip,sort
limit(num) 显示num条数据
skip(num) 跳过num条数据
sort({key: value}) key: 排序属性名 value: 1为升序 -1为降序
当find查询,三者都有时,顺序是sort() 然后skip() 最后limit()