对于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. 安装 vsftpd

    (1)安装vsftpdsudo apt-get install vsftpd (2)配置sudo vi /etc/vsftpd.conf #anonymous_enable=YESlocal_enab ...

  2. apply和call的区别在哪里

    apply:方法能劫持另外一个对象的方法,继承另外一个对象的属性. Function.apply(obj,args)方法能接收两个参数obj:这个对象将代替Function类里this对象args:这 ...

  3. JavaScript 中的算术运算

    JavaScript中算术运算在溢出(overflow).下溢(underflow)或被零整除时不会报错,当数字运算结果超过了JavaScript所能表示的数字上限(溢出),结果为一个特殊的无穷大(i ...

  4. 连续区间覆盖染色问题 ------ SHUOJ 1716

    题目链接:http://202.121.199.212/JudgeOnline/problem.php?id=1716 [题意] 1到N的区间,一种操作让编号从a到b的数变为z,但不会低于2,问多次操 ...

  5. 利用spring自己实现观察者模式

    利用spring,自己实现的一个观察者模式,写着玩玩,目的是为了加深理解,下次用Spring自带的玩一玩. 首先我们定义一个侦听类接口 package com.hyenas.common.listen ...

  6. Linux之zsh

    0.安装zsh: sudo apt-get install zsh git wget 1.启用zsh:chsh -s /bin/zsh 2.github: https://github.com/rob ...

  7. Ajax+JSON学习笔记(二)

    来源:http://www.imooc.com/learn/250 readyState属性 0:请求未初始化,open还没有调用 1:服务器连接已建立,open已经调用了 2:请求已接受,也就是接收 ...

  8. Table of Contents - Handlebars

    Getting Started Expressions Precompilation Block Helpers Partials Built-In Helpers API Reference

  9. web.config里面使用configSource

    在asp.net中如果修改了配置文件web.config以后,会导致应用程序重启,所有回话(session)丢失掉,在 .NET Framework 2.0 以后的版本中,可以在一个单独文件中包括所有 ...

  10. MySQLdb模块安装-win环境

    原帖地址:http://blog.csdn.net/wklken/article/details/7253245 使用python访问mysql,需要一系列安装 linux下MySQLdb安装见  P ...