对于nosql之前工作中有用到bekerlydb,最近开始了解mongodb,先简单写下mongodb的一些常用操作,当是个总结:

1.mongodb使用数据库(database)和集合(collection)来存放数据, 数据库中包含很多集合,一个数据库相当于mysql中的一个库,集合(collection)类似于mysql中的表(table),collection使
用key_value的形式存储数据,数据格式是BSON。
2.mongodb使用use dbname来选择数据库,如果数据库不存在,在第一次保存数据的时候会创建数据库。
数据库中的集合也一样。
3.mongodb的常用操作,很多和mysql相似:
show databases; //显示存在的数据库(简写show dbs)
use dbname; //选择数据库(dbname:对应的数据库名)
show collections; //显示当前选择的db中的集合

//通过连接端关闭mongodb服务端
use admin;
db.shutdownServer();
4.mongodb中数字类型的key也会当做字符串存储,而value则会区分数字和字符串
键值对{"1":23}和{1:23}是相同的,{1:23}和{1:"23"}是有区别的
5.刚学mongodb的时候感觉用起来和stl里面的map相似,就连遍历都相似:
var cur = db.test.find();
while(cur.hasNext()){printjson(cur.next());}
mongodb的shell支持javascript操作数据库,printjson()函数以json格式输出结果。
是不是感觉像map里的迭代器遍历一样。

6.mongodb的增删改查操作(test为自建的集合名):
//增加
db.test.save({1:"hello"}); //保存数据到test集合中
db.test.insert({1:"hello"});//插入数据到test集合中(和insert功能相同)
//删除
db.test.remove({1:"hello"});//删除所有包含键值对{1:"hello"}的行
//修改
db.test.update({1:"hello"},{$set:{1:"hello world"}}); //使用{1:"hello world"}替换{1:"hello"},记住set前面的$一定不能忘了,不然就是用{set:{1:"hello world"}}这个嵌套键

值对替换掉原来的值
db.test.update({1:"hello"},{$set:{2:"hello world"}}); //更新的时候改变了key,相当于增加了{2:"hello world"}到原来的行中,并没有替换掉原来的{1:"hello"}
db.test.update({1:"hello"},{2:"hello"}); //这个相当于先找到{1:"hello"}的行,再用{2:"hello"}替换掉整行的数据,并不只有{1:"hello"}的值被替换
//查找
db.test.find(); //显示test集合中的数据
db.test.find({1:"hello"});//查找键值对含有{1:"hello"}的行
db.test.findOne({1:"hello"});//查找键值对含有{1:"hello"}的行,只返回第一条数据
7.mongodb数据库的备份,还原,删除
mongodb备份使用mongodump工具, 还原使用的是mongorestore工具,这两个程序都在mongodb的bin目录下存在.
//备份
mongodump -h serverip -d dbname -o backpath
-h:mongodb服务器的地址,在本机可以用localhost,
-d:备份的数据库的名字,
-o:备份文件存放目录
例如windows下备份test数据库到d:\data\backup,命令行下输入:
mongodump -h localhost -d test -o d:\data\backup

//还原
mongorestore -h serverip -d dbname -directoryperdb backpath
-directoryperdb:备份文件存放的路径
例如还原上面备份的test数据库,命令行下输入:
mongorestore -h localhost -d test -directoryperdb d:\data\backup\test

//删除数据库
需要用mongo连接到服务器,在shell模式下进行:
use test; //选择需要删除的数据库
db.dropDatabase(); //删除数据库

8.mongodb集合导出,导入,删除
//导出
使用mongoexprot默认以json格式将collection导出到文件,也可以指定为csv格式

mongoexprot -h serverip -d dbname -c collectionname -o path
-h: mongodb服务器ip
-d:数据库名
-c:数据库下面的一个集合名字
-o:导出后的文件名

导出csv格式,还需要指定csv文件的头:
mongoexport -h serverip -d dbname -c collectionname --csv -f 字段名1,字段名2,字段名3 -o path
--csv:指定导出为csv格式
-f:指定导出的csv的文件的头,一般根据collection的字段key来指定

//导入
使用mongoimport导入:
mongoimport -h serverip -ddbname -c collectionname path
例如导入user.data到test数据的user集合:
mongoimport -h localhost -d test -c user user.data

导入csv格式:
mongoimport -h serverip -d dbname -c collectionname --type csv --headerline --file path
--type:文件类型
--headerline:表示不导入首行(csv文件的首行是表头)
--file:导入文件的路径

注意:如果导入的时候需要先删除掉原来的集合,可以再加上-drop

//删除集合
db.test.drop();

mongodb的常用操作的更多相关文章

  1. 【mongodb系统学习之八】mongodb shell常用操作

    八.mongodb  shell常用基础操作(每个语句后可以加分号,也可以不加,看情况定(有的工具中可以不加),最好是加): 1).进入shell操作界面:mongo,上边已有演示: 2).查看当前使 ...

  2. MongoDB的常用操作总结

    简介 MongoDB是一款强大.灵活.且易于扩展的通用型数据库 MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统. 在高负载的情况下,添加更多的节点,可以保证服务器性能. ...

  3. mongodb的常用操作(三)

    继续mongodb的学习和总结: 11.mongodb的mapreduce功能 mapreduce可以说是mongodb的一个很强大的功能,可以实现复杂的运算和统计,做一个简要的总结: 假设有user ...

  4. MongoDB之常用操作

    最近经常使用MongoDB来进行数据的操作,特此记录总结一下

  5. mac 安装mongodb与常用操作

    1.安装 brew update brew install mongodb 2.启动mongo mongod --config /usr/local/etc/mongod.conf 3.启动 mong ...

  6. mongodb的常用操作(二)

    继续mongodb的学习: 9.mongodb条件查询 假设有user集合,里面结构如下:{ "_id" : ObjectId("52ab35d281181f853264 ...

  7. MongoDB数据库常用操作

    推荐文章 --- 一天精通MongoDB数据库 注意: monogdb数据在使用之后必须及时 mongodb.close()否则后台崩溃. 1. 删除文档中的一个字段 db.<集合名>.u ...

  8. mongodb数据库常用操作的整理

    这是个人在项目中抽取的代码,自己写的utils的通用模块,使用的框架是tronado,包括了数据库的认证,以及增删改查排序,如有特别需要可以联系我或者自己扩展,刚学python不久,仅供参考,例子如下 ...

  9. mongodb常用操作语句

    mongodb常用操作语句 A:创建数据表 db.createCollection(name, {capped: <Boolean>, autoIndexId: <Boolean&g ...

随机推荐

  1. C# 之 集合整理

    集合,表示可以通过遍历每个元素来访问的一组对象(特别是可使用foreach循环访问):一个集合包括多个元素,即有一个集合类对象和N个元素对象. BCL(Base Class Library, 基类库) ...

  2. 1.4.2 solr字段类型--(1.4.2.6)使用外部文件和程序

    1.4.2 solr字段类型 (1.4.2.1) 字段类型定义和字段类型属性. (1.4.2.2) solr附带的字段类型 (1.4.2.3) 使用货币和汇率 (1.4.2.4) 使用Dates(日期 ...

  3. entity framework 连接 oracle 发布后出现的问题(Unable to find the requested .Net Framework Data Provider)

    用entity framework 搭建的一个windows 程序,在vs中用oracle 的ODT 工具连接oracle数据库,昨天发布后出现下面一个错误, System.ArgumentExcep ...

  4. [Arduino] 基于Xbee Pro和网络技术的智能公交系统设计

    转自:http://www.21ic.com/app/rf/201112/99474.htm 引言 公共交通具有个体交通无法比拟的强大优势,优先发展城市公共交通系统是解决大.中城市交通问题的最佳途径. ...

  5. Ngnix 安装、信号量、虚拟主机配置

    ngnix的安装很简单 1.先从ngnix官网下载ngnix压缩包 wget http://nginx.org/download/nginx-1.6.2.tar.gz 2.解压并进入其目录 tar - ...

  6. Python_使用smtplib和email模块发送邮件

    [http://blog.csdn.net/menglei8625/article/details/7721746] SMTP (Simple Mail Transfer Protocol) 邮件传送 ...

  7. Javascript -- toFixed()函数

    Javascript——toFiexed()函数 1. toFixed(n) 限制小数点后位数,四舍五入.n:0~20 . 2. 作用对象必须是number,不能为其他类型.如(8.001).toFi ...

  8. /var/spool/postfix/maildrop小文件太多造成inode索引使用完解决

    /var/spool/postfix/maildrop 小文件太多造成inode索引使用完解决办法 问题表现和检查: 1.运行df -i / 查看inode使用是否满: 2.查看/var/spool/ ...

  9. 修改的某人的SqlHelper FOR ODBC

    随便找来的,源作者不明. 本来是SQL SERVER 的 修改为 ODBC使用. 并且修改了连接字符串,可以允许修改一次. using System; using System.Collections ...

  10. 504 Gateway Time-out 和 502 Bad Gateway相关处理

    若报:504 Gateway Time-out则与nginx有关 解决方案: #vim nginx.conf 添加以下代码: http{ fastcgi_connect_timeout 300; fa ...