MongoDB 学习笔记
1、配置:mongod --dbpath=D:\MongoDB\data
mongo
2、基本的增删查改
find() update()-- 整体更新,局部更新。
修改器: $inc db.person.update({"age":23},{$inc:{"salary":1000}})
第一个参数为条件。第二个参数为修改的值,但值必须为整数。($inc allowed for numbers only)
$set 修改器: db.person.update({"name":"gll"},{$set:{"age":25}}}
还有一种操作为修改或添加操作:这里可以叫insertOrUpdate操作。
只要将update的第三个参数设为true即可。如果没有查到,就在数据库里新增一条,避免数据库里判断是update还是add操作。使用简单。
批量更新:
如果匹配多条的话, 默认的情况下只更新第一条。如果需要多条更新的话,在update的第四个参数中设为true即可。也很简单。
Remove 操作。
3、高级操作
聚合:
count() distinct() 选择了哪个属性,哪个就不能重复。
group() 参数 key : 指定文档分组的依据,所有的age键的值划分到一组,true为返回键age的值。
initial: "initial":{"person":[]} 每一组reduce函数调用的初始个数,第一组的所有成员都会使用这个累加器。
说白了。这个就是个初始值。每次$reduce 都会调用这个值进行值的改变。
例子:
db.person.group({ . "key":{"age":true}, . "initial":{"person":[]}, . "$reduce":function(cur,prev){ 第一个参数为当前文档,第二个参数为累加器文档 . prev.person.push(cur.name); . } . }) eg : db.person.group({ "key": { "age": true }, "initial": { "person": [ ] }, "$reduce": function(doc,out){ out.person.push(doc.name); }, "finalize": function(out){ out.count=out.person.length; }, "condition": { "age": { $lt: 25 } }
相关推荐
-
MongoDB各种查询操作详解
一.find操作 MongoDB中使用find来进行查询,通过指定find的第一个参数可以实现全部和部分查询. 1.查询全部 空的查询文档{}会匹配集合的全部内容.如果不指定查询文档,默认就是{}. 2.部分查询 3.键的筛选 键的筛选是查询时只返回自己感兴趣的键值,通过指定find的第二个参数来实现.这样可以节省传输的数据量,又能节省客户端解码文档的时间和内存消耗. 查询时,数据库所关心的查询文档的值必须是常量. 二.查询条件 1.比较查询 $lt,$lte,$gt,$gte,$ne和<,<
-
高效mongodb的php分页类(不使用skip)
mongodb分页skip+limit分页要先查出所有结果再去跳过,这样如果查询页面越往后效率越低. 如果能够通过查询条件查出每页结果的最后一条记录,在用最后一条记录作为查询条件去查下一页,这样每次都查询页面size条记录,效率不会差. 具体代码如下:包含mongodb.class.php, page.class.php, test.php mongodb.class.php mongodb 操作类 复制代码 代码如下: <?php function show_error($message, $
-
MongoDB入门教程(包含安装、常用命令、相关概念、使用技巧、常见操作等)
一.安装和配置 MongoDB 的官方下载站是 http://www.mongodb.org/downloads,可以去上面下载最新的安装程序 Windows 平台的安装 ● 步骤一: 下载 MongoDB 点击上方官方下载地址, 并下载 Windows 版本 ● 步骤二: 设置 MongoDB 程序存放目录 下载完成后, 解压到自定义文件夹,例: D:\mongodb\ ● 步骤三: 设置数据文件存放目录 在 D:\mongodb\ 目录下创建 db 和 l
-
php对mongodb的扩展(初识如故)
在博主的威逼之下特为大家进行一下小分享,特此申明博主人品非常淳朴只是威逼,绝对没有利诱. 由于mongodb的相关中文资料较少,之后若有机会继续为大家分享.希望这点小分享能给大家带来收获,言归正传请往下看. 为什么说"初识如故"呢,因为mongodb的数据存储格式是一种由于MongoDB的文档结构为BJSON格式(BJSON全称:BinaryJSON),而BJSON格式本身就支持保存二进制格式的数据,因此可以把文件的二进制格式的数据直接保存到MongoDB的文档结构中. MongoDB
-
MongoDB数据库插入、更新和删除操作详解
一.Insert操作 Insert操作是MongoDB插入数据的基本方法,对目标集合使用Insert操作,会将该文档添加到MongoDB并自动生成相应的ID键.文档结构采用类似JSON的BSON格式.常见的插入操作主要有单条插入和批量插入两种形式.插入时只是简单地将文档存入数据库中,不进行额外的验证,也不会执行代码,所以不存在注入式攻击的可能. 1.单条插入 2.批量插入 MongoDB对批量插入的支持是通过传递多个文档组成的数组到数据库来实现的.由于它插入数据是通过发送TCP请求的,这样只需发
-
MongoDB常用操作命令大全
如:如果你想创建一个"myTest"的数据库,先运行use myTest命令,之后就做一些操作(如:db.createCollection('user')),这样就可以创建一个名叫"myTest"的数据库. 一.数据库常用命令1.Help查看命令提示 复制代码 代码如下: helpdb.help();db.yourColl.help();db.youColl.find().help();rs.help(); 2.切换/创建数据库 复制代码 代码如下: use you
-
MongoDB插入数据的3种方法
insert()方法: 下面是在inventory集合中插入一个三个字段的文档: 复制代码 代码如下: db.inventory.insert( { _id: 10, type: "misc", item: "card", qty: 15 } ) 在实示例中,文档有一个用户指定的值为10的_id字段,这个值必须在inventory集合中唯一.update()方法: 调用update()方法使用upsert标志创建一个新文档当没有匹配查询条件
-
PHP实现的MongoDB数据库操作类分享
class HMongodb { private $mongo; //Mongodb连接 private $curr_db_name; private $curr_table_name; private $error; public function getInstance($mongo_server, $flag=array()) { static $mongodb_arr; if (empty($flag['tag'])) { $flag['tag'] = 'default'; } if (
-
MongoDB 学习笔记(一)-MongoDB配置
MongoDB简介 MongoDB 是一个基于分布式文件存储的数据库.由 C++ 语言编写.旨在为 WEB 应用提供可扩展的高性能数据存储解决方案. MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的. 步入正题: 下载MongoDB 下载地址:https://www.mongodb.com/download-center?jmp=nav 这里是在windows平台下安装MongoDB, 下载后,在本机,按提示进行安装. 注: 这个安装只
-
MongoDB学习笔记(一) MongoDB介绍与安装方法
一.前言 最近开始学习非关系型数据库MongoDB,却在博客园上找不到比较系统的教程,很多资料都要去查阅英文网站,效率比较低下.本人不才,借着自学的机会把心得体会都记录下来,方便感兴趣的童鞋分享讨论.部分资源出自其他博客,旨将零散知识点集中到一起,如果有侵犯您的权利,请联系li-pan2@163.com.大部分内容均系原创,欢迎大家转载分享,但转载的同时别忘了注明作者和原文链接哦. 二.MongoDB简介 MongoDB是一个高性能,开源,无模式的文档型数据库,是当前NoSql数据库中比较热门的
-
MongoDB学习笔记—Linux下搭建MongoDB环境
1.MongoDB简单说明 a MongoDB是由C++语言编写的一个基于分布式文件存储的开源数据库系统,它的目的在于为WEB应用提供可扩展的高性能数据存储解决方案. b MongoDB是一个介于关系型数据库和非关系型数据库之间的产品,是非关系型数据库当中功能最丰富,最像关系型数据库的.它支持的数据结构非常松散,会将数据存储为一个文档,数据结构由键值对(key=>value)组成,是类似于json的bson格式, c MongoDB最大的特点就是它支持的查询语言非常强大,其语法有点类似于面向对象
-
MongoDB学习笔记(五) MongoDB文件存取操作
由于MongoDB的文档结构为BJSON格式(BJSON全称:Binary JSON),而BJSON格式本身就支持保存二进制格式的数据,因此可以把文件的二进制格式的数据直接保存到MongoDB的文档结构中.但是由于一个BJSON的最大长度不能超过4M,所以限制了单个文档中能存入的最大文件不能超过4M.为了提供对大容量文件存取的支持,samus驱动提供了"GridFS"方式来支持,"GridFS"方式文件操作需要引入新的程序集"MongoDB.GridFS.
-
MongoDB学习笔记(六) MongoDB索引用法和效率分析
MongoDB中的索引其实类似于关系型数据库,都是为了提高查询和排序的效率的,并且实现原理也基本一致.由于集合中的键(字段)可以是普通数据类型,也可以是子文档.MongoDB可以在各种类型的键上创建索引.下面分别讲解各种类型的索引的创建,查询,以及索引的维护等. 一.创建索引 1. 默认索引 MongoDB有个默认的"_id"的键,他相当于"主键"的角色.集合创建后系统会自动创建一个索引在"_id"键上,它是默认索引,索引名叫"_id_
-
MongoDB学习笔记(四) 用MongoDB的文档结构描述数据关系
MongoDB的集合(collection)可以看做关系型数据库的表,文档对象(document)可以看做关系型数据库的一条记录.但两者并不完全对等.表的结构是固定的,MongoDB集合并没有这个约束:另外,存入集合的文档对象甚至可以嵌入子文档,或者"子集合".他们最终都可以用类似于BJSON的格式描述.我们今天就来分析MongoDB这一特性带来的独特数据管理方式.我们还是以samus驱动为例来分析,samus驱动支持两种方式访问数据库,基本方式和linq方式,基本方式在上篇以介绍过,
-
MongoDB学习笔记(二) 通过samus驱动实现基本数据操作
传统的关系数据库一般由数据库(database).表(table).记录(record)三个层次概念组成,MongoDB是由(database).集合(collection).文档对象(document)三个层次组成.MongoDB对于关系型数据库里的表,但是集合中没有列.行和关系概念,这体现了模式自由的特点. 一.关于MongoDB的驱动 MongoDB支持多种语言的驱动,在此我们只介绍C#的驱动.仅C#驱动都有很多种,每种驱动的形式大致相同,但是细节各有千秋,因此代码不能通用.比较常用的是官
-
MongoDB学习笔记之GridFS使用介绍
GridFS简介 GridFS是MongoDB中的一个内置功能,可以用于存放大量小文件. GridFS使用 MongoDB提供了一个命令行工具mongofiles可以来处理GridFS, 列出所有文件: 复制代码 代码如下: mongofiles list 上传一个文件: 复制代码 代码如下: mongofiles put xxx.txt 下载一个文件: 复制代码 代码如下: mongofiles get xxx.txt 查找文件: 复制代码 代码如下: //会查找所有文件名中包含"xxx&qu
-
MongoDB 学习笔记
1.配置:mongod --dbpath=D:\MongoDB\data mongo 2.基本的增删查改 find() update()-- 整体更新,局部更新. 修改器: $inc db.person.update({"age":23},{$inc:{"salary":1000}}) 第一个参数为条件.第二个参数为修改的值,但值必须为整数.($inc allowed for numbers only) $set 修改器: db.person.update({&qu
-
MongoDB学习笔记(三) 在MVC模式下通过Jqgrid表格操作MongoDB数据
看到下图,是通过Jqgrid实现表格数据的基本增删查改的操作.表格数据增删改是一般企业应用系统开发的常见功能,不过不同的是这个表格数据来源是非关系型的数据库MongoDB.nosql虽然概念新颖,但是MongoDB基本应用实现起来还是比较轻松的,甚至代码比基本的ADO.net访问关系数据源还要简洁.由于其本身的"非关系"的数据存储方式,使得对象关系映射这个环节对于MongoDB来讲显得毫无意义,因此我们也不会对MongoDB引入所谓的"ORM"框架. 下面我们将逐步
随机推荐
- 使用正则表达式进行xml数据验证
- VBS教程:正则表达式简介 -定位符
- javascript 实现map集合
- Android应用开发中Fragment的静态加载与动态加载实例
- MySQL中日期比较时遇到的编码问题解决办法
- PHP三层结构(上) 简单三层结构
- jquery SweetAlert插件实现响应式提示框
- 浅谈Linux 二进制包安装MySQL的一些问题
- .NET WinForm实现在listview中添加progressbar的方法
- javascript之dhDataGrid Ver2.0.0代码
- 可以文本显示的公告栏的js代码
- 60华诞普天同庆 IDC假日促销目不暇接
- 深入理解C++中的vector类的用法及特性
- C#实现随机洗牌的方法
- php检查页面是否被百度收录
- Spring Bean的属性注入方式
- 初识Spring boot监控
- Spring Boot JPA如何把ORM统一起来
- Opencv3.4.0实现视频中的帧保存为图片功能
- goLang引入自定义包的方法