MongoDB(一)
问题解决
1、由于目标计算机积极拒绝 无法连接
原因:还没有启动mongodb,就使用mongo命令
解决方法:在bin目录下输入
mongod --dbpath XXXX/data 然后在输入 mongo
一、基础操作
每条对特定表的操作都需要以 db.表名 开头,如插入操作 db.person.insert({"属性":"值"}),下面省略 db.表名
1、打开mongo shelll命令
mongo
2、插入记录
insert({“属性”:”值”})
3、查找全部记录/一条记录
find()
find().limit(1)
4、根据条件查找记录
find({“name”:”value”})
5、更新记录
update({查找条件},{更新后属性值})
6、删除记录
remove({查找条件})
对整个mongo数据库进行操作,以下不需要加db.表名
7、查询目前存在的所有数据库
show dbs;
8、切换数据库(和mysql中方法相同)
use 数据库名;
二、插入操作
可以用一些javascript的语法
```
var single = {“key”:”value”,”key”:{“key”:”value”}}
insert(single)
```
也可以用single.key = “value”,对single进行修改
三、查询操作
(1)
>,<,>=,<=,!= 对应着 $gt,$lt,$gte,$lte,$ne,如
```
find({"age":{$lte:22}})
```
(2)
And,Or,In,notIn 对应着 (用逗号隔开即可)、 $or、$in、$nin
如
```
db.person.find({$or:[{"sex":"girl"},{"age":23}]})
```
、
```
db.person.find({"address.province":{$in:["anhui","jiejiang"]}})
```
、
```
db.person.find({"address.city":{$nin:["shenzhen","hangzhou"]}})
```
(3)正则
以j开头,以1结尾的
```
db.person.find({"name":/^j/,"name":/1$/})
```
(4)
```
db.person.find({$where:function(){return this.age=18}})
```
四、更新
(1)$inc修改器
年龄在原先基础上加12,不存在属性值则会新建
```
db.person.update({"name":"while snow"},{$inc:{"age":12}})
```
(2)$set修改器
更新为设定的值
(3)upset操作
不存在则新建,用法只需将update的第三个参数设置为new
```
db.person.update({"name":"new"},{$inc:{"age":1}},true)
```
五、聚合、游标
sql中的聚合操作有group、count、distinct
(1)count
```
db.person.count({"age":16})
```
(2)distinct
```
db.person.distinct("age")
```
(3)group
cur为当前文档对象,prev为上一次function的累计对象(第一次为initial中的"person":[],这里的person就是输出的集合名)
例1:
```
db.person.group({
"key":{"age":true},
"initial":{"person":[]},
"$reduce":function(cur,prev){prev.person.push(cur.name);}
})
```
例2:
```
db.person.group(
{
"key":{"age":true},
"initial":{"sex":[]},
"$reduce":function(cur,prev){prev.sex.push(cur.sex);}
}
)
```
过滤age大于18的,并且标明每一个集合中的人数
condition为过滤条件,finalize每组执行完后触发这个函数达到计数的目的
> 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:18}}
… })
六、mapreduce
map 映射函数,对选定的key进行分组,这里是以name来进行分组的
> var map = function(){
… emit(this.name,{count:1});
… }
map 归约函数,对map分组后的数据进行分组简化
> var reduce = function(key,value){
… var result = {count:0};
… for(var i = 0;i<value.length;i++){
... result.count += value[i].count;}
... return result;
... }
emit为调用的次数,result存放的集合名,input传入的文档数,output输出的文档数,reduce函数被调用的次数
> db.person.mapReduce(map,reduce,{“out”:”collection”})
{
“result” : “collection”,
“timeMillis” : 24,
“counts” : {
“input” : 6,
“emit” : 6,
“reduce” : 2,
“output” : 4
},
“ok” : 1,
}
> db.collection.find()
{ “_id” : “jack”, “value” : { “count” : 2 } }
{ “_id” : “will”, “value” : { “count” : 1 } }
{ “_id” : “jone”, “value” : { “count” : 1 } }
{ “_id” : “mike”, “value” : { “count” : 2 } }
七、游标
var list = db.person.find();
其实也就是将查询语句赋值给变量,只要枚举过一次,游标就会销毁,比如输入list或list.forEach(function(x){print(x.name);})
之后再输入list,就不会看到有返回结果
参考
[1] 《8天学通MongoDB》 http://www.cnblogs.com/huangxincheng/archive/2012/02/18/2356595.html
MongoDB(一)的更多相关文章
- 【翻译】MongoDB指南/聚合——聚合管道
[原文地址]https://docs.mongodb.com/manual/ 聚合 聚合操作处理数据记录并返回计算后的结果.聚合操作将多个文档分组,并能对已分组的数据执行一系列操作而返回单一结果.Mo ...
- 【翻译】MongoDB指南/CRUD操作(四)
[原文地址]https://docs.mongodb.com/manual/ CRUD操作(四) 1 查询方案(Query Plans) MongoDB 查询优化程序处理查询并且针对给定可利用的索引选 ...
- 【翻译】MongoDB指南/CRUD操作(三)
[原文地址]https://docs.mongodb.com/manual/ CRUD操作(三) 主要内容: 原子性和事务(Atomicity and Transactions),读隔离.一致性和新近 ...
- 【翻译】MongoDB指南/CRUD操作(二)
[原文地址]https://docs.mongodb.com/manual/ MongoDB CRUD操作(二) 主要内容: 更新文档,删除文档,批量写操作,SQL与MongoDB映射图,读隔离(读关 ...
- 【翻译】MongoDB指南/CRUD操作(一)
[原文地址]https://docs.mongodb.com/manual/ MongoDB CRUD操作(一) 主要内容:CRUD操作简介,插入文档,查询文档. CRUD操作包括创建.读取.更新和删 ...
- CRL快速开发框架系列教程十二(MongoDB支持)
本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...
- MongoDB系列(二):C#应用
前言 上一篇文章<MongoDB系列(一):简介及安装>已经介绍了MongoDB以及其在window环境下的安装,这篇文章主要讲讲如何用C#来与MongoDB进行通讯.再次强调一下,我使用 ...
- MongoDB系列(一):简介及安装
什么是MongoDB MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统. 在高负载的情况下,添加更多的节点,可以保证服务器性能. MongoDB 旨在为应用提供可扩展的高 ...
- [原]分享一下我和MongoDB与Redis那些事
缘起:来自于我在近期一个项目上遇到的问题,在Segmentfault上发表了提问 知识背景: 对不是很熟悉MongoDB和Redis的同学做一下介绍. 1.MongoDB数组查询:MongoDB自带L ...
- 用MongoDB分析合肥餐饮业
看了<从数据角度解析福州美食>后难免心痒,动了要分析合肥餐饮业的念头,因此特地写了Node.js爬虫爬取了合肥的大众点评数据.分析数据库我并没有采用MySQL而是用的MongoDB,是因为 ...
随机推荐
- Visual Studio Code初探
作者:Grey 本文的GIF动画均使用ScreenToGif进行录制. 摘要 微软今年发布了一款运行于 OS X,Windows 和 Linux 之上的免费跨平台编辑器: Visual Studio ...
- jQuery点缩略图显示大图片
2015年繁忙的一月份,无更多时间去学习ASP.NET MVC程序,二月份又是中国的新年,长达半个月的假期,望回到老家中,在无电脑无网络的日子里,能有更多时间陪伴年迈的父母亲. 今天学习jQuery的 ...
- wpf 下面用MVVC的RelayCommand命令引发的一个异常
具体解决方法参见我的博问:https://q.cnblogs.com/list/myquestion
- 字典树(Trie树)实现与应用
一.概述 1.基本概念 字典树,又称为单词查找树,Tire数,是一种树形结构,它是一种哈希树的变种. 2.基本性质 根节点不包含字符,除根节点外的每一个子节点都包含一个字符 从根节点到某一节点.路径上 ...
- 【循序渐进学Python】10.模块和包
1.导入模块 任何Python程序都可以作为模块导入,只要Python解释器能找到我们定义的模块所在位置即可,一般来讲,在一个模块被导入时,Python解释器会按照下面的步骤进行搜索: 在当前所在目录 ...
- sencha gridpanel改变单元格颜色
标题列包含 审核通过则绿色,包含拒绝为红色: { xtype: 'gridcolumn', renderer: function(value, metaData, record, rowIndex, ...
- .NET转JAVA之拼音组件
PS:做了4年,自我感觉.NET到瓶颈了,而且公司并没有深入运用.NET技术的项目,自我学习感觉也没太大动力(请骂我懒T_T).再加上技术年限越往上走,了解到的.NET职业提升环境就越来越艰难(个人理 ...
- WPF画图简便技巧
下面这个就是:起点在(0,0)开始的正方形.(用绿色填充).此方法比一条一条的写方便多了! <Path Fill="LawnGreen" Data="M 0 0 L ...
- 【JS复习笔记】00 序
作为一个前端苦手,说是复习,你就当我是重学好了. 好吧,我当然不可能抱着一个砖头去复习,所以捡了本薄的来读——<JavaScript语言精粹>. 当初带我的人说这本书挺好,就看这本书好了. ...
- HDU 2159---FATE---带限制的完全背包
HDU 2159 Description 最近xhd正在玩一款叫做FATE的游戏,为了得到极品装备,xhd在不停的杀怪做任务.久而久之xhd开始对杀怪产生的厌恶感,但又不得不通过杀怪来升完这最后一 ...