基础

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:,
cellCode:,
startTime:,
kpiNameLalalalala0000:
}
)

如下图:

插入

1.添加一条记录:

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

如下图:

2.添加多条记录:

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

如下图:

更新

按筛选条件更新数据:

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

如下图:

删除

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

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

如下图:

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: },
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,具体可查阅官方文档。

脚本导入

官方文档的链接:

https://docs.mongodb.com/manual/tutorial/write-scripts-for-the-mongo-shell/

语法差异

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")

MongoDB基本增删改查操作-mongo shell的更多相关文章

  1. Scala对MongoDB的增删改查操作

    =========================================== 原文链接: Scala对MongoDB的增删改查操作 转载请注明出处! ==================== ...

  2. python 全栈开发,Day124(MongoDB初识,增删改查操作,数据类型,$关键字以及$修改器,"$"的奇妙用法,Array Object 的特殊操作,选取跳过排序,客户端操作)

    一.MongoDB初识 什么是MongoDB MongoDB 是一个基于分布式文件存储的数据库.由 C++ 语言编写.旨在为 WEB 应用提供可扩展的高性能数据存储解决方案. MongoDB 是一个介 ...

  3. Mongodb之增删改查操作

    一.创建一个数据库 在我们使用MongoDB数据库时引进了这样一个知识,“对于mongodb,使用了不存在的对象,就等于在创建这个对象”,所以创建数据库的操作就比较简单 在我们使用mysql数据库时u ...

  4. Node.js对MongoDB进行增删改查操作

    MongoDB简介 MongoDB是一个开源的.文档型的NoSQL数据库程序.MongoDB将数据存储在类似JSON的文档中,操作起来更灵活方便.NoSQL数据库中的文档(documents)对应于S ...

  5. MongoDB之增删改查(一)

    本文主要介绍MongoDB数据库增删改查操作. 增 mongoDB和其它关系型数据库一样,通过insert来添加数据到集合中去. db.collectionName.insert(内容) 显示数据库中 ...

  6. python操作三大主流数据库(8)python操作mongodb数据库②python使用pymongo操作mongodb的增删改查

    python操作mongodb数据库②python使用pymongo操作mongodb的增删改查 文档http://api.mongodb.com/python/current/api/index.h ...

  7. C# 对MongoDB 进行增删改查的简单操作

    C# 对MongoDB 进行增删改查的简单操作   下面演示下C#操作MongoDB驱动的简单的增删改查代码 运用到的MongoDB支持的C#驱动,当前版本为1.6.0 1,连接数据库   /// & ...

  8. SpringBoot操作MongoDB实现增删改查

    本篇博客主讲如何使用SpringBoot操作MongoDB. SpringBoot操作MongoDB实现增删改查 (1)pom.xml引入依赖 <dependency> <group ...

  9. Java连接MongoDB进行增删改查

    1.导入必须的包: 详情看项目:http://pan.baidu.com/s/1cvDAOY 2.通过Myeclipse创建WEB项目 3. 3.bean:创建实体类 package com.bean ...

随机推荐

  1. C# 时间戳的生成

    /**        * 生成时间戳,标准北京时间,时区为东八区,自1970年1月1日 0点0分0秒以来的秒数         * @return 时间戳        */        publi ...

  2. 从命令行运行 MyBatis Generator

    ? ? 一.准备 1. 获取最新jar包 2. 获取xml dtd <?xml version="1.0" encoding="UTF-8"?> & ...

  3. org.slf4j.impl.SimpleLoggerFactory cannot be cast to ch.qos.logback.classic.LoggerContext

    查看日志信息: SLF4J: Class path contains multiple SLF4J bindings. SLF4J: Found binding in [jar:file:/app/a ...

  4. 公司web安全等级提升

    目录 背景介绍 目录 针对国调的初次测试结果 解决方案 二次测试 关于XSS 什么是XSS 基本防御 代码防御 xss代码辑录 说明 参考文章 版本记录 背景介绍 公司的一个web数据展示系统,本来是 ...

  5. mybatis_入门程序

    Mybatis入门 (一).程序环境 1.jar包 2.classpath目录下建立SqlMapConfig.xml. mybatis的配置文件.全部设置有如下 同时,数据库的参数可以用propert ...

  6. Linux文件排序工具 sort 命令详解

    sort是排序工具,它完美贯彻了Unix哲学:"只做一件事,并做到完美".它的排序功能极强.极完整,只要文件中的数据足够规则,它几乎可以排出所有想要的排序结果,是一个非常优质的工具 ...

  7. Android滑动冲突解决方法

    叙述 滑动冲突可以说是日常开发中比较常见的一类问题,也是比较让人头疼的一类问题,尤其是在使用第三方框架的时候,两个原本完美的控件,组合在一起之后,忽然发现整个世界都不好了. 关于滑动冲突 滑动冲突分类 ...

  8. Android-ListView-ArrayAdapter

    我在上一篇博客中Android-动态添加控件到ScrollView,写到可以用Java动态添加控件到Scrollview的孩子LinearLayout里面去,这种方式是不合理的,因为这种方式是一次性把 ...

  9. [LeetCode 题解]: Anagrams

    Given an array of strings, return all groups of strings that are anagrams. Note: All inputs will be ...

  10. Replication--复制笔记1

    1.快照复制和事务复制使用分发代理传递文件,而合并复制使用合并代理来传递文件2.快照代理在分发服务器上运行3.在创建快照是,根据复制的类型对发布表的加锁方式而不同    a)对应合并发布,快照代理不适 ...