博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MongoDB基本增删改查操作-mongo shell
阅读量:5292 次
发布时间:2019-06-14

本文共 2686 字,大约阅读时间需要 8 分钟。

基础

1.查看所有数据库:

show dbs

2.选择数据库:

use test

3.查看数据库中有哪些集合:

show collections

如下图:

查询

1.查看集合中有哪些数据,其中abc为集合名称:

2.为查询添加过滤条件a=2:

3.指定查询结果集中包含的字段,如下查询仅包含字段a/b,注意,此处除了_id字段外,其他字段要么全是1,要么全是0:

4.综合示例:

db.kpiRecord.find(    {        cellCode:"48BF74_12020000051TST0001",         startTime: {            $gte: new ISODate("2018-06-01T00:00:00Z")        },         startTime: {            $lt: new ISODate("2018-06-01T01:00:00Z")        }    },    {        _id:0,        cellCode:1,        startTime:1,        kpiNameLalalalala0000:1    })

如下图:

插入

1.添加一条记录:

db.abc.insertOne({
"123" : "123-val", "a" : 34, "b" : 36})

如下图:

2.添加多条记录:

db.abc.insertMany([    {
"123" : "123-val0", "a" : 35, "b" : 37}, {
"123" : "123-val1", "a" : 36, "b" : 38}])

如下图:

更新

按筛选条件更新数据:

db.abc.updateMany(    {        a: {$gt : 10}    },    {        $set: {
"b": 54321, "123": 54321} })

如下图:

删除

1.根据条件删除集合中的数据:

db.abc.deleteMany({    a : {$gte : 36}})

如下图:

2.删除集合,其中abc为集合名称:

3.删除数据库,其中pm为数据库名称:

聚合

先根据cellCode字段和startTime字段进行筛选,再根据cellCode进行聚合,计算出总和、最大值、最小值、平均值,其中pretty()方法只是为了以更整齐的方式显示结果:

db.kpiRecord.aggregate([    {        $match: {            cellCode:"48BF74_12020000051TST0001",             startTime: {$gte: new ISODate("2018-06-01T00:00:00Z")},             startTime: {$lt: new ISODate("2018-06-01T01:00:00Z")}        }    },    {        $group: {            _id: "$cellCode",            count: { $sum: 1 },            sum: {$sum: "$kpiNameLalalalala0000"},            max: {$max: "$kpiNameLalalalala0000"},            min: {$min: "$kpiNameLalalalala0000"},            avg: {$avg: "$kpiNameLalalalala0000"}        }    }]).pretty()

如下图:

限制条件:

(1).结果集document大小限制:结果集中,每一个document的大小不得超过16M。注意仅是限制结果集,处理过程中,document的大小是可以超过这个限制的。
(2).内存限制:Stages所能使用的内存不能超过100M。对于一些数据量较大的聚合计算,100M不够用,这时,需要指定allowDiskUse属性,从而允许MongoDB向临时文件中写数据。注意,对于$graphLookup操作符,allowDiskUse不生效。

另外,这里介绍的聚合方式是pipeline,最基本的聚合方式,MongoDB还有更复杂但也更强大的聚合方式,如Map-reduce,具体可查阅官方文档。

脚本导入

官方文档的链接:

语法差异

1.有一些语句,在mongo shell中可以执行,但在脚本中是无法执行的,需要换一种写法。下表中列出了转换写法。

2.查询语句,需要按如下方式书写:

cursor = db.collection.find();while ( cursor.hasNext() ) {   printjson( cursor.next() );}

 

示例

1.写一个脚本,如下是一个示例:

db.abc.updateMany({"field_a":"a-v-0"}, { $set: {"field_b": "update-newodododo"} })db.abc.insertMany([    { "field_a" : "js-new-a", "field_b" : "js-new-b", "field_c" : "js-new-c" },    { "field_a" : "js-new-a-1", "field_b" : "js-new-b-1", "field_c" : "js-new-c-1" }])

 

2.导入脚本,有两种方式:一是从命令行直接执行导入,二是先登入mongo shell再执行导入

2.1.第一种方式,命令行直接导入:

mongo -u "username" -p "password" --authenticationDatabase="admin" ./mongo-operation-script.js

 

2.2.第二种方式,从mongo shell执行导入:

load("/root/mongo-operation-script.js")

 

转载于:https://www.cnblogs.com/sybblogs/p/9404785.html

你可能感兴趣的文章
图片生成缩略图
查看>>
基于SQL调用Com组件来发送邮件
查看>>
关于Mysql select语句中拼接字符串的记录
查看>>
动态规划 例子与复杂度
查看>>
安装webpack-dev-server后,npm run dev报错
查看>>
[BZOJ4567][SCOI2016]背单词(Trie+贪心)
查看>>
git回退到某个版本并提交
查看>>
查看oracle数据库的连接数以及用户
查看>>
简单几行js实现tab选项切换效果
查看>>
关于更改滚动条样式
查看>>
【数据结构】栈结构操作示例
查看>>
中建项目环境迁移说明
查看>>
三.野指针和free
查看>>
VIO的Bundle Adjustment推导
查看>>
activemq5.14+zookeeper3.4.9实现高可用
查看>>
asp.net FileUpload控件文件格式的判断及文件大小限制
查看>>
angular(1.5.8)
查看>>
h5的video标签支持的视频格式
查看>>
TCP/IP详解学习笔记(3)IP协议ARP协议和RARP协议
查看>>
简单【用户输入验证】
查看>>