对于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. VirtualBox 导入.vdi文件时报“uuid is exists”错误

    解决办法: 1.要安装的.vdi文件所在目录:D:\developTools\vm\RedHatLinux1.vdi 2.找到VirtualBox的安装目录,这里是D:\Program Files\O ...

  2. NSBlockOperation添加多个任务

    //创建一个队列 NSOperationQueue *operation=[[NSOperationQueue alloc]init]; //把任务放在NSBlockOperation里面 NSBlo ...

  3. 运用Real Spy Monitor监控网络

    Real Spy Monitor是一个监测互联网和个人电脑,以保障其安全的软件.包括键盘敲击.网页站点.视窗开关.程序执行.屏幕扫描以及文件的出入等都是其监控的对象. 1.添加使用密码 在使用Real ...

  4. leetcode 题解:Remove Duplicates from Sorted Array(已排序数组去重)

    题目: Given a sorted array, remove the duplicates in place such that each element appear only once and ...

  5. OC之category的用法

    简介 实例 好处 一.category简介 动态的为某个已经存在的类增加方法,不可以增加成员变量 二.实例 // // Student+CatetoryStudent.h // Category // ...

  6. Hessian矩阵

    http://baike.baidu.com/link?url=o1ts6Eirjn5mHQCZUHGykiI8tDIdtHHOe6IDXagtcvF9ncOfdDOzT8tmFj41_DEsiUCr ...

  7. codeforces 675D D. Tree Construction(线段树+BTS)

    题目链接: D. Tree Construction D. Tree Construction time limit per test 2 seconds memory limit per test ...

  8. GSS7 spoj 6779. Can you answer these queries VII 树链剖分+线段树

    GSS7Can you answer these queries VII 给出一棵树,树的节点有权值,有两种操作: 1.询问节点x,y的路径上最大子段和,可以为空 2.把节点x,y的路径上所有节点的权 ...

  9. Matlab的GUI参数传递方式总结

    MATLAB GUI传递方式 1.全局变量: 2.作为函数的参数传递: 3.利用控件的userdata数据: 4.为handles结构体添加新字段: 5.setappdata函数为句柄添加数据: 6. ...

  10. P2022 有趣的数

    P2022 有趣的数 题目描述 让我们来考虑1到N的正整数集合.让我们把集合中的元素按照字典序排列,例如当N=11时,其顺序应该为:1,10,11,2,3,4,5,6,7,8,9. 定义K在N个数中的 ...