mongodb的常用操作
对于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的常用操作的更多相关文章
- 【mongodb系统学习之八】mongodb shell常用操作
八.mongodb shell常用基础操作(每个语句后可以加分号,也可以不加,看情况定(有的工具中可以不加),最好是加): 1).进入shell操作界面:mongo,上边已有演示: 2).查看当前使 ...
- MongoDB的常用操作总结
简介 MongoDB是一款强大.灵活.且易于扩展的通用型数据库 MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统. 在高负载的情况下,添加更多的节点,可以保证服务器性能. ...
- mongodb的常用操作(三)
继续mongodb的学习和总结: 11.mongodb的mapreduce功能 mapreduce可以说是mongodb的一个很强大的功能,可以实现复杂的运算和统计,做一个简要的总结: 假设有user ...
- MongoDB之常用操作
最近经常使用MongoDB来进行数据的操作,特此记录总结一下
- mac 安装mongodb与常用操作
1.安装 brew update brew install mongodb 2.启动mongo mongod --config /usr/local/etc/mongod.conf 3.启动 mong ...
- mongodb的常用操作(二)
继续mongodb的学习: 9.mongodb条件查询 假设有user集合,里面结构如下:{ "_id" : ObjectId("52ab35d281181f853264 ...
- MongoDB数据库常用操作
推荐文章 --- 一天精通MongoDB数据库 注意: monogdb数据在使用之后必须及时 mongodb.close()否则后台崩溃. 1. 删除文档中的一个字段 db.<集合名>.u ...
- mongodb数据库常用操作的整理
这是个人在项目中抽取的代码,自己写的utils的通用模块,使用的框架是tronado,包括了数据库的认证,以及增删改查排序,如有特别需要可以联系我或者自己扩展,刚学python不久,仅供参考,例子如下 ...
- mongodb常用操作语句
mongodb常用操作语句 A:创建数据表 db.createCollection(name, {capped: <Boolean>, autoIndexId: <Boolean&g ...
随机推荐
- C# 之 集合整理
集合,表示可以通过遍历每个元素来访问的一组对象(特别是可使用foreach循环访问):一个集合包括多个元素,即有一个集合类对象和N个元素对象. BCL(Base Class Library, 基类库) ...
- 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(日期 ...
- entity framework 连接 oracle 发布后出现的问题(Unable to find the requested .Net Framework Data Provider)
用entity framework 搭建的一个windows 程序,在vs中用oracle 的ODT 工具连接oracle数据库,昨天发布后出现下面一个错误, System.ArgumentExcep ...
- [Arduino] 基于Xbee Pro和网络技术的智能公交系统设计
转自:http://www.21ic.com/app/rf/201112/99474.htm 引言 公共交通具有个体交通无法比拟的强大优势,优先发展城市公共交通系统是解决大.中城市交通问题的最佳途径. ...
- Ngnix 安装、信号量、虚拟主机配置
ngnix的安装很简单 1.先从ngnix官网下载ngnix压缩包 wget http://nginx.org/download/nginx-1.6.2.tar.gz 2.解压并进入其目录 tar - ...
- Python_使用smtplib和email模块发送邮件
[http://blog.csdn.net/menglei8625/article/details/7721746] SMTP (Simple Mail Transfer Protocol) 邮件传送 ...
- Javascript -- toFixed()函数
Javascript——toFiexed()函数 1. toFixed(n) 限制小数点后位数,四舍五入.n:0~20 . 2. 作用对象必须是number,不能为其他类型.如(8.001).toFi ...
- /var/spool/postfix/maildrop小文件太多造成inode索引使用完解决
/var/spool/postfix/maildrop 小文件太多造成inode索引使用完解决办法 问题表现和检查: 1.运行df -i / 查看inode使用是否满: 2.查看/var/spool/ ...
- 修改的某人的SqlHelper FOR ODBC
随便找来的,源作者不明. 本来是SQL SERVER 的 修改为 ODBC使用. 并且修改了连接字符串,可以允许修改一次. using System; using System.Collections ...
- 504 Gateway Time-out 和 502 Bad Gateway相关处理
若报:504 Gateway Time-out则与nginx有关 解决方案: #vim nginx.conf 添加以下代码: http{ fastcgi_connect_timeout 300; fa ...