文档章节

MongoDB语句

LoSingSang
 LoSingSang
发布于 2018/12/25 16:34
字数 998
阅读 21
收藏 0

//库:
show dbs     //显示所有库
db     //当前库
use 库名    //自动创建新库
db.dropDatabase()     //删除库
show tables(collections)    //显示当前数据库的(表/集合)

//表/集合:
db.createCollection("表名",{ capped : true, autoIndexId : true, size : 6142800, max : 10000 })     //创建固定集合
db.表名.drop()    //删除表
db.表名.isCapped() //是否为固定集合
db.runCommand({"convertToCapped":"表名",size:1000})        //转换为固定集合

//行/文档
//增
db.表名.insert({a:1,b:"asdf"})    //自动创建表插入(行/文档)
        save({a:1,b:"asdf"})
        insertOne({a:1,b:"asdf"})
        insertMany([{"b": 3}, {'c': 4}])

varname=({a:1,b:"asdf"})
db.表名.insert(varname)        //使用变量

//改
db.表名.find()        //获取表数据
db.tabletest.update({'a':1},{$set:{'a':100}},{multi:true})        //修改a:1的行为a:100,multi:true表示所有的,否则值修改第一个
db.tabletest.update({'a':1},{$set:{'a':100}},false//0,true//1)    //false表示upsert,是否添加进集合中
db.tabletest.save()     //用于替换集合中的文档,要带有_id

db.表名.remove({"a":1},true//1)        //删除集合中的文档(一个)
db.表名.remove({})     //删除表中所有文档
db.repairDatabase() //remove() 方法 并不会真正释放空间,需要来回收磁盘空间

//删
//推荐使用 deleteOne() 和 deleteMany() 方法
db.表名.deleteMany({})
db.表名.deleteMany({ status : "A" })
db.表名.deleteOne( { status: "D" } )

//查
db.表名.find({"a":"1"}).pretty()
db.表名.find({"a":{$lt:5}}).pretty() //<
db.表名.find({"a":{$lte:5}}).pretty() //<=
db.表名.find({"a":{$gt:5}}).pretty() //>
db.表名.find({"a":{$gte:5}}).pretty() //>=
db.表名.find({"a":{$ne:5}}).pretty() //!=

db.表名.find({"a":2,"b":2}).pretty() //and
db.表名.find({$or:[{"a":2},{"a":3}]}).pretty() //or
db.表名.find({title:/教/})        //包含"教"
db.表名.find({title:/^教/})        //以"教"字开头
db.表名.find({title:/教$/})        //以"教"字结尾
db.表名.find({"title" : {$type : 'string'//2}})    //集合中 title 为 String 的数据
db.表名.find({"a":"1"}).limit(2)        //限制条数
                        skip(2)        //跳过两条
//对于分页pageIndex、pageSize
db.表名.find({"a":"1"}).skip((pageIndex-1)*pageSize)).limit(pageSize)    

db.表名.find().sort({"a":-1})     //按字段为a进行排序,-1递减顺序desc,1递增顺序asc


//索引
db.表名.createIndex({open: 1, close: 1}, {background: true})     //索引,background后台执行,不会阻塞数据操作;unique唯一索引;name索引名称

db.表名.getIndexes()        //查看集合索引
db.表名.totalIndexSize()     //查看集合索引大小
db.表名.dropIndexes()        //删除集合所有索引
db.表名.dropIndex("a_1")     //删除集合指定索引

db.表名.ensureIndex({"数组的字段名":1})    //给数组创建索引
db.表名.find({****}).explain()  //索引使用情况

db.表名.ensureIndex({字段名:"text"})            //建立全文索引,对每一个词建立一个索引
db.表名.find({$text:{$search:"索引内容"}})    //使用全文索引

//聚合函数
db.表名.aggregate([{$group:{_id:"$字段a",数量:{$sum:"$字段b"}}}])     //按字段a分组,计算分组里字段b的总和
//$avg  $min  $max

//管道
db.tabletest.aggregate([
    {$project:{        //修改输入文档结构
        _id:0,        //不包含_id,默认为包含
        a:1,
        b:1
    }},
    {$match:{
        a:{$gt:2}    //过滤数据
    }},
    {$project:{        //修改结构为只有a字段
        a:1
    }}
])
//$limit:用来限制MongoDB聚合管道返回的文档数。
//$skip:在聚合管道中跳过指定数量的文档,并返回余下的文档。
//$unwind:将文档中的某一个数组类型字段拆分成多条,每条包含数组中的一个值。
//$group:将集合中的文档分组,可用于统计结果。
//$sort:将输入文档排序后输出。
//$geoNear:输出接近某一地理位置的有序文档

db.tabletest.intsert({a:4,b:4,info:{
    "$ref":"tableref",
    "$id": ObjectId("5c21cb8bfca61b72275992bf"),
    "$db":"test"}
})

//正则表达式
db.posts.find({字段名:{$regex:"runoob.*?",$options:"$i"}})    //$options:"$i"不区分大小写

//使用函数的方法,实现id自动递增
db.createCollection("counters")        //创建记录计数集合
db.counters({"_id":"tabletest","sequence_value": 0})    //初始化需要自动递增的集合

function getNextSequenceValue(sequenceName){    //计数处理函数
   var sequenceDocument = db.counters.findAndModify(
      {
         query:{_id: sequenceName },
         update: {$inc:{sequence_value:1}},
         "new":true
      });
   return sequenceDocument.sequence_value;
}

db.tabletest.insert({    //实现自动计数
   "_id":getNextSequenceValue("tabletest"),
   "a":6,
   "b":6})

© 著作权归作者所有

共有 人打赏支持
LoSingSang
粉丝 3
博文 53
码字总数 16173
作品 0
深圳
程序员
私信 提问
Zabbix监控mongodb配置

本文主要介绍zabbix监控mongodb的配置。 zabbix监控mongodb需要自定义脚本去监控,脚本可以传入多个参数。 原理:通过mongodb客户端连接命令,过滤出db.serverStatus()输出的信息。 一、创建...

hnr1017
2018/07/03
0
0
MongoDB 如何限制结果和分页显示

在这篇文章我们将看一下怎样在MongoDB限制结果同样怎样去分页显示。MongoDB使用limit去限制许多返回结果,MongoDB使用skip去跳转来自结果集中的记录,使用limit并结合skip能使你在MongoDB中做...

oschina
2013/01/27
5.2K
5
MongoDB和MySQL的区别

前言: MySQL与MongoDB都是开源的常用数据库,但是MySQL是传统的关系型数据库,MongoDB则是非关系型数据库,也叫文档型数据库,是一种NoSQL的数据库。它们各有各的优点,关键是看用在什么地方...

小喜-3
2018/04/18
0
0
MongoDB 4.0 将有望支持跨文档事务

预计2018年夏天上市的 MongoDB 4.0,预计将支持跨文档事务(Multi-Document Transactions),以保证资料完整性(Data Integrity)。跨文档事务是 ACID 的基石。MongoDB 自 3.0 版起,开始支持...

达尔文
2018/02/26
2.5K
3
windows 安装 mongoDB

1)、下载MongoDB 官网下载最新版本 2)、设置MongoDB目录(s) 将其解压到D:study,再重命名为mongodb,路径为 D:studymongodb 3)、设置数据文件路径(设置影响第4步启动语句) 在d:盘建一个dat...

自在闲人
2012/06/13
0
0

没有更多内容

加载失败,请刷新页面

加载更多

大数据教程(11.9)hive操作基础知识

上一篇博客分享了hive的简介和初体验,本节博主将继续分享一些hive的操作的基础知识。 DDL操作 (1)创建表 #建表语法CREATE [EXTERNAL] TABLE [IF NOT EXISTS] table_name [(col_name ...

em_aaron
57分钟前
0
0
OSChina 周四乱弹 —— 我家猫真会后空翻

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @我没有抓狂 :#今天听这个# 我艇牛逼,百听不厌,太好听辣 分享 Led Zeppelin 的歌曲《Stairway To Heaven》 《Stairway To Heaven》- Led Z...

小小编辑
今天
1
0
node调用dll

先安装python2.7 安装node-gyp cnpm install node-gyp -g 新建一个Electron-vue项目(案例用Electron-vue) vue init simulatedgreg/electron-vue my-project 安装electron-rebuild cnpm ins......

Chason-洪
今天
3
0
scala学习(一)

学习Spark之前需要学习Scala。 参考学习的书籍:快学Scala

柠檬果过
今天
3
0
通俗易懂解释网络工程中的技术,如STP,HSRP等

导读 在面试时,比如被问到HSRP的主备切换时间时多久,STP几个状态的停留时间,自己知道有这些东西,但在工作中不会经常用到,就老是记不住,觉得可能还是自己基础不够牢固,知识掌握不够全面...

问题终结者
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部