数据库导出
举例
mongodump -h IP地址:MongoDB端口 -u MongoDB账户 -p MongoDB密码 -d 数据库名 -c 表名 -o /data/programs/bk/tasks.json(这里是导出的路径)
-h
为需要导出的数据库地址注意加端口号-u
为MongoDB的账号-p
为MongoDB密码-d
需要导出的数据在哪一个库-c
需要导出的表名-o
导出到哪里(可以控制导出的类型修改后缀名)
常用语句
db.businesorders.find().pretty()
- 查看某个数据库的数据
$gte
, $gt
, $lte
, $lt
$gte
大于等于,$gt
大于,$lte
小于等于,$lt
小于
$match
- 比如说我查询之前需要根据时间筛选一次就需要这个,下面是例子
1 | {$match : {'created' : {$gte : 1527782400000,$lte : 1530374400000}}} |
$group
- 分组
{ $group: { _id:
, : { : }, … } }
第一个字段必须是_id
,对应的就是分类的字段,field随便取
展示所有table
show tables
$skip
,$limit
- 分页语句,下面是例子
1 | //$skip 跳过前面的数据 from就是前面几页的数据 |
$unwind
- 用来处理数组,下面举例 service
这里为数组结构,我分组的时候需要用某个service中的字段进行$$group
,但是数组结构没办法直接用.
点出来,要把数组进行处理,这里就用$unwind
处理,下面是代码
1 | {$unwind : '$service'}, |
$push
- 在
$group
的时候在集合里面放一个数组,只能push数组
1 | db.projectsms.aggregate([ |
find
语句
- 使用mongoose工具的时候可以使用一下方式进行过滤,不需要使用aggregate(聚合进行字段筛选):
1 | //params是筛选条件,{name: 1, sex:1, identityNumber: 1}意思是只要这些字段 |
updata
语句
1 | await this.model.update( |
count
语句
1 | await this.model.count(query); # query里面是查询条件,返回数量 |
$set
语句
- 假如有一下数据:
1
2
3
4
5
6//第一条
{"_id": 1, "imgs": [7, 9, 2]},
//第二条
{"_id": 2, "imgs": [17, 56, 8]},
//第三条
{"_id": 3, "imgs": [93, 11, 534]}这里有个需求,我想要更新_id为2,把imgs节点中元素为56的跟换为99
1 | > db.students.update({_id:2, imgs:99},{$set: {'imgs.$':56} }) |
请记住,位置$操作符充当更新文档查询中第一个匹配的占位符。
- 假如数据变化稍微复杂,结构如下:
1 | { |
- 有个需求,我需要更新嵌套文档中_id为1中的imgs节点中的的body字段为77的那一条数据中的food改为1
1 |
|
- 还是上面的数据结构,这里又有一个需求,我需要更新嵌套文档中_id为1中的imgs节点中的的body字段为大于等于77,header小于等于500的那一条数据中的food改为1
1 |
|
$elemMatch()操作符匹配多个内嵌文档的查询条件