问题解决

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(一)的更多相关文章

  1. 【翻译】MongoDB指南/聚合——聚合管道

    [原文地址]https://docs.mongodb.com/manual/ 聚合 聚合操作处理数据记录并返回计算后的结果.聚合操作将多个文档分组,并能对已分组的数据执行一系列操作而返回单一结果.Mo ...

  2. 【翻译】MongoDB指南/CRUD操作(四)

    [原文地址]https://docs.mongodb.com/manual/ CRUD操作(四) 1 查询方案(Query Plans) MongoDB 查询优化程序处理查询并且针对给定可利用的索引选 ...

  3. 【翻译】MongoDB指南/CRUD操作(三)

    [原文地址]https://docs.mongodb.com/manual/ CRUD操作(三) 主要内容: 原子性和事务(Atomicity and Transactions),读隔离.一致性和新近 ...

  4. 【翻译】MongoDB指南/CRUD操作(二)

    [原文地址]https://docs.mongodb.com/manual/ MongoDB CRUD操作(二) 主要内容: 更新文档,删除文档,批量写操作,SQL与MongoDB映射图,读隔离(读关 ...

  5. 【翻译】MongoDB指南/CRUD操作(一)

    [原文地址]https://docs.mongodb.com/manual/ MongoDB CRUD操作(一) 主要内容:CRUD操作简介,插入文档,查询文档. CRUD操作包括创建.读取.更新和删 ...

  6. CRL快速开发框架系列教程十二(MongoDB支持)

    本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...

  7. MongoDB系列(二):C#应用

    前言 上一篇文章<MongoDB系列(一):简介及安装>已经介绍了MongoDB以及其在window环境下的安装,这篇文章主要讲讲如何用C#来与MongoDB进行通讯.再次强调一下,我使用 ...

  8. MongoDB系列(一):简介及安装

    什么是MongoDB MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统. 在高负载的情况下,添加更多的节点,可以保证服务器性能. MongoDB 旨在为应用提供可扩展的高 ...

  9. [原]分享一下我和MongoDB与Redis那些事

    缘起:来自于我在近期一个项目上遇到的问题,在Segmentfault上发表了提问 知识背景: 对不是很熟悉MongoDB和Redis的同学做一下介绍. 1.MongoDB数组查询:MongoDB自带L ...

  10. 用MongoDB分析合肥餐饮业

    看了<从数据角度解析福州美食>后难免心痒,动了要分析合肥餐饮业的念头,因此特地写了Node.js爬虫爬取了合肥的大众点评数据.分析数据库我并没有采用MySQL而是用的MongoDB,是因为 ...

随机推荐

  1. 安装DRBD的一些问题

    安装DRBD,建议用源代码包先生成rpm包来安装,不要用直接download的rpm包,有可能会用不了,因为这跟系统内核版本有关系,在2.6.33版本以前内核没有集成drbd,   A.先安装一些其它 ...

  2. [SQL] SQL SERVER基础语法

    Struct Query Language 1.3NF a.原子性 b.不能数据冗余 c.引用其他表的主键 2.约束 a.非空约束 b.主键约束 c.唯一约束 d.默认约束 e.检查约束 f.外键约束 ...

  3. TinyOS和Deluge的安装模拟(一)

    介绍 TinyOS是一款嵌入式操作系统,相信做无线传感器网络开发的同志们都不陌生.同类型的系统有不少,但是TinyOS的应用较之其他系统更为广泛.TinyOS 1.x版本和2.x版本是目前主要的两个分 ...

  4. undefined reference to `omp_get_max_threads'

    原因是缺少 libgomp/openmp 库的链接 配置和解决方法参考: http://www.code-by.org/viewtopic.php?f=54&t=163

  5. 重构第16天 封装条件(Encapsulate Conditional)

    理解:本文中的“封装条件”是指条件关系比较复杂时,代码的可读性会比较差,所以这时我们应当根据条件表达式是否需要参数将条件表达式提取成可读性更好的属性或者方法,如果条件表达式不需要参数则可以提取成属性, ...

  6. 【EF 译文系列】重试执行策略的局限性(EF 版本至少为 6)

    原文链接:Limitations with Retrying Execution Strategies (EF6 onwards) 当使用重试执行策略的时候,大体有以下两种局限性: 不支持以流的方式进 ...

  7. Netty学习之客户端创建

    一.客户端开发时序图 图片来源:Netty权威指南(第2版) 二.Netty客户端开发步骤 使用Netty进行客户端开发主要有以下几个步骤: 1.用户线程创建Bootstrap Bootstrap b ...

  8. php中的字符串常用函数(四) ord() 获得字符的ascii码 chr()获取ascii码对应的字符

    ord('a');//=>97 返回小写a 的ascii码值97 chr(97);//=>a 返回ascii码表上的97对应的 小写a

  9. (旧)子数涵数·UI设计——扁平化设计

    一.基本资料 1.由来 扁平化设计这个概念,是由Google(谷歌)在2008年提出的:它的首个实践者是microsoft(微软),microsoft在2012年发行了win8系统,这个系统的外观主题 ...

  10. 一、MyBatis简介与配置MyBatis+Spring+MySql

    //备注:该博客引自:http://limingnihao.iteye.com/blog/106076 1.1MyBatis简介 MyBatis 是一个可以自定义SQL.存储过程和高级映射的持久层框架 ...