windows下mongodb基础玩法系列
说在前面的话
在系列二中CURD只是简单的走了一下代码操作的流程,其中全是简单基础操作的内容, 在我仔细看完接下来的内容后决定再丰富一下前面的操作,并实战一个简单的demo出来,demo具体搭配语言暂时决定在PHP与nodejs之间。
增加内容至文档没说完的那些事儿

目录

集合的创建与返回值

①在插入文档到集合的时候,如果集合不存在,增加内容到文档的这个操作就自动创建集合。这一点和mysql有些不一样,mysql必须先创建库、表,再增加内容到表中。
②这一次就不实际操作截图了,按照之前的操作我又走看一遍,这一次留意了一个小的细节。增加内容成功后会返回一个WriteResult({"nInserted":1}),这个对象表示了插入的条数。

增加多个文档的方法

①创建一个数组文档,在增加数组文档即可。

//用数组存放多个文档
var users = [{
"name":"A",
"age":32
},{
"name":"B",
"age":33
},{
"name":"C",
"age":34
}];
//添加数组操作
db.testData.insert(users);

②在2.6版本之后提供了一个可以用来增加多个文档的API,具体操作流程展开代码。

//初始化bulk()
var bulk = db.testData.initializeUnorderedBulkOp();//无序列表操作
//var bulk = db.collection.initializeOrderedBulkOp();//有序列表操作
//insert至bulk对象
bulk.insert({
"name":"A",
"age":20
});
bulk.insert({
"name":"B",
"age":21
});
//调用bulk对象的execute()方法添加文档至集合
bulk.execute();

这里只是描述一下有这两个方法,暂时不做深入学习,感觉挺需要深入学习的一点,后续跟踪一下。

查找内容没说完的那些事儿

目录

指定查询与条件查询使用

前面的学习中已经学会了简单的指定查询与条件查询,综合运用就是,例,我们要找出姓名是A,或者年龄是33/34的所有人(随意营造的条件)。此时我把之前随意添加的数据再添加了两次用于这次测试。

db.testData.find({$or:[{"name":"A"},{"age":{$in:[33,34]}}]});

嵌入式(Embedded)文档查询的方法

//插入模拟数据
db.testData.insert([{
"name":"unofficial",
"age":18,
"other":{
"hobby":["eat","drink","play","happy"],
"speciality":["hands","legs"]
},
"score":[58,59,60]
},{
"name":"pushself",
"age":100,
"other":{
"hobby":["play"],
"speciality":["legs"]
},
"score":[60,70,80]
}]);
//成绩分别对应语数外,找到语文成绩小于60的同学的姓名
db.testData.find({"score.0":{$lt:60}},{"_id":0, "name":1});
//把好吃的家伙的名字查出来
db.testData.find({"other.hobby":"eat"},{"_id":0, "name":1});

限制查询

在find()时,在第二个参数中控制对应需要的键值对,例如我不需要_id,只是需要显示姓名,我就可以把第二个参数设置为{"_id":0,"name":1}。

反复的切换光标读取

//执行查找操作
var rs = db.testData.find({});
//遍历
while(rs.hasNext()) {
print(tojson(rs.next()));//也可以使用printjson(rs.next());
}

其中的while也可以使用myCursor.forEach(printjson);代替操作

查询的性能问题

取决于索引的创建,引入一个explain()方法反应查询性能的数据。

//插入一组测试数据
db.testData.insert([
{ "_id" : 1, "item" : "f1", type: "food", quantity: 500 },
{ "_id" : 2, "item" : "f2", type: "food", quantity: 100 },
{ "_id" : 3, "item" : "p1", type: "paper", quantity: 200 },
{ "_id" : 4, "item" : "p2", type: "paper", quantity: 150 },
{ "_id" : 5, "item" : "f3", type: "food", quantity: 300 },
{ "_id" : 6, "item" : "t1", type: "toys", quantity: 500 },
{ "_id" : 7, "item" : "a1", type: "apparel", quantity: 250 },
{ "_id" : 8, "item" : "a2", type: "apparel", quantity: 400 },
{ "_id" : 9, "item" : "t2", type: "toys", quantity: 50 },
{ "_id" : 10, "item" : "f4", type: "food", quantity: 75 }
]);
//执行查找操作
db.testData.find({"type":"food"});
//nscanned 和 nscannedObjects 显示 10 表明MongoDB不得不扫描十文档 (即集合中的所有文档)找到这四个匹配文档。
//如果给type添加一个索引
db.testData.ensureIndex({"type":1})
//再执行查询操作的时候就查询四个索引文档,并返回了四个文档内容 //复合索引的性能
db.testData.ensureIndex( { quantity: 1, type: 1 } );
db.testData.ensureIndex( { type: 1, quantity: 1 } );
//明显通过数据可以看出性能的差异,更多的后面的学习文章争取分析一下查询优化
删除操作
针对前面的内容,这里暂时只是补充一点内容就是通过条件匹配到的内容,只是删除一条内容的时候,第二个参数设置为1即可。 db.testData.remove({"type":"food"}, 1);

windows下mongodb基础玩法系列二CURD附加一的更多相关文章

  1. windows下mongodb基础玩法系列二CURD操作(创建、更新、读取和删除)

    windows下mongodb基础玩法系列 windows下mongodb基础玩法系列一介绍与安装 windows下mongodb基础玩法系列二CURD操作(创建.更新.读取和删除) windows下 ...

  2. windows下mongodb基础玩法系列一介绍与安装

    windows下mongodb基础玩法系列 windows下mongodb基础玩法系列一介绍与安装 windows下mongodb基础玩法系列二CURD操作(创建.更新.读取和删除) windows下 ...

  3. AB实验的高端玩法系列3 - AB组不随机?观测试验?Propensity Score

    背景 都说随机是AB实验的核心,为什么随机这么重要呢?有人说因为随机所以AB组整体不存在差异,这样才能准确估计实验效果(ATE) \[ ATE = E(Y_t(1) - Y_c(0)) \] 那究竟随 ...

  4. eclipse下使用cygwin的方法(Windows下用eclipse玩gcc/g++和gdb)

    明天就回国了,今晚回国前写写如何配置eclipse和CDT.这个配置方法网上讨论不是很多,可能用的人少,毕竟Windows上写C++程序多数喜欢VS,即使写的是Linux程序,很多人仍然会用VS(说只 ...

  5. windows下Mongodb图形化工具安装及配置

    接上篇文章<Windows下Mongodb安装部署.docx> 一.RockMongo 1.RockMongo需要php环境,首先需要搭建php环境,选择采用 下载xampp,这里我用的是 ...

  6. [转载]windows下mongodb安装与使用整理

    windows下mongodb安装与使用整理 一.首先安装mongodb 1.下载地址:http://www.mongodb.org/downloads 2.解压缩到自己想要安装的目录,比如d:\mo ...

  7. Word 查找替换高级玩法系列之 -- 段首批量添加字符

    打开「查找和替换」输入框,按照下图操作: 更多查找替换高级玩法,参看:Word查找替换高级玩法系列 -- 目录篇 未完 ...... 点击访问原文(进入后根据右侧标签,快速定位到本文)

  8. Word 查找替换高级玩法系列之 -- 把论文中的缩写词快速变成目录下边的注释表

    1. 前言 问题:Word写论文如何把文中的缩写快速转换成注释表? 原来样子: 想要的样子: 2. 步骤 使用查找替换高级用法,替换缩写顺序 选中所有文字 打开查找替换对话框,输入以下表达式: 替换后 ...

  9. Windows下MongoDB安装与设置

    最近在研究传奇已久的MongoDB,遇到很多问题,将整理好的Windows下的MongoDB整体到连接过程分享给大家,也留给自己. 第一步:下载http://www.mongodb.org/downl ...

随机推荐

  1. chrome升级后出现滚动条无法滚动

    最近升级chrome最新版本后,导致项目中功能页面的局部滚动条无法滚动(心里暗骂了很久),无论怎么滚动都是最外层的滚动条响应... 1.猜想:尼玛google应该不会干事件流混乱这种事,pass: 2 ...

  2. ABP框架系列之十一:(AspNet-Core-ASPNET核心)

    Introduction This document describes ASP.NET Core integration for ASP.NET Boilerplate framework. ASP ...

  3. ubuntu上vsftpd服务配置

    Ubuntu上提供两种常用的ftp服务应用:vsftpd 和 tftpd,区别如下: 1)vsftpd 支持客户端上下传文件,支持浏览器显示及下载,支持用户名密码认证,支持匿名访问,默认端口TCP:2 ...

  4. 08-jQuery的位置信息

    Query的位置信息跟JS的client系列.offset系列.scroll系列封装好的一些简便api. 一.宽度和高度 获取宽度 .width() 描述:为匹配的元素集合中获取第一个元素的当前计算宽 ...

  5. Vuejs(14)——在v-for中,利用index来对第一项添加class

    版权声明:出处http://blog.csdn.net/qq20004604 (1)在v-for中,利用index来对第一项添加class <a class="list-group-i ...

  6. IntelliJ IDEA 2018.1.3 破解方法之一

    IntelliJ IDEA 2018.1.3 破解方法之一 声明:如果资金充足请购买正版! NO1 下载安装IntelliJ IDEA 企业版 NO2 下载jar包 (1)下载地址:http://id ...

  7. Vue学习笔记八:v-for,v-if,v-show指令

    目录 v-for指令:遍历 HTML和效果图 v-for讲解 v-if和v-show:创建,删除,显示,隐藏 HTML和效果图 v-if和v-show的原理 v-for指令:遍历 HTML和效果图 有 ...

  8. Nginx + Tomcat 在 Windows7 上搭建负载均衡集群

    一.安装Tomcat和Nginx 首先安装两个apache-tomcat-8.0.41,下载地址:http://tomcat.apache.org 并安装一个nginx-1.13.0,下载地址http ...

  9. 关于hermes与solr,es的定位与区别

    Hermes与开源的Solr.ElasticSearch的不同 谈到Hermes的索引技术,相信很多同学都会想到Solr.ElasticSearch.Solr.ElasticSearch在真可谓是大名 ...

  10. ubuntu16.04 编译出错:fatal error: SDL/SDL.h: No such file or directory

    在ubuntu 16.04编译神经网络代码时候,遇到了这样一种错误? fatal error: SDL/SDL.h: No such file or directory 原因是SDL库没有安装,根据你 ...