NoSQL Mongodb的快速入门

本文介绍了MongoDB的安装过程及常见问题解决方法,并详细展示了MongoDB的基本操作命令,包括数据库与集合的创建、数据增删改查、索引管理、备份与恢复等。

近来在做一个爬虫项目,按照爬取内容的逻辑,存储为非关系型数据库表方便,因此看了一下Mongodb。

顺便提一下,安装时候可能的一些坑:

坑1. 一定要指定好数据目录,并且保证是可写的。

坑2. 一定要在自己的hosts的文件变量中配置好自己的host。否则出错。

坑3. 在启动mongd的时候,遇到:

2016-04-28T21:20:19.576+0800 I NETWORK  [initandlisten] waiting for connections on port 27017

是正常现象,不要管他,也不要终止它。另开一个命令行,启动,mongo,就进入shell 了。

坑4. 有些人可能想要在网页端查看数据库,其网址是mongd log 第一行的host+port




 下面是一些与sql的对比,转自:http://blog.csdn.net/itlhb/article/details/7209284 

1、创建服务:

mongod --logpath d:\Cloud\mongodb\logs\nongodb.log --logappend --dbpath d:\Cloud\mongodb\data --directoryperdb --install

mongod --dbpath "D:\Cloud\NoSql\mongodb2\data" --logpath "D:\Cloud\NoSql\mongodb2\data\logs.txt" --install --serviceName "MongoDB"


2、端口:
[initandlisten] waiting for connections on port 27017

[websvr] web admin interface listening on port 28017


3、语法命令:

1) 常用命令:
mongod.exe --dbpath "d:\mongodb\data\db" --directoryperdb --logpath "d:\mongodb\data\logs" --logappend

mongo.exe

>show dbs 

>use memo //使用 数据库 memo

>show collections //列出当前数据库的collections

>db //显示当前数据库

>show users //列出用户

help //更多语法

2) 创建数据库与数据集合:
>db

>show dbs

>use test2

>db.createCollection("t_test");

>use test2

>db

>t={name:"hb",addr:"shanghai"};

>db.t_test.find();

>db.t_test.save(t);

>db.t_test.find();

>db.t_test.insert({name:"test",addr:"beijing"});

>db.t_test.save({name:"test2",addr:"tianjin",phone:"025-0001"});


3) 数据查询:
db.t_test.find() //select * from t_test

db.t_test.find().limit(2) //select * from t_test limit 2

db.t_test.find().sort({x:1}) //select * from t_test order by x asc 

db.t_test.find().sort({x:1}).skip(2).limit(3) //select * from t_test order by x asc limit 2,3

db.t_test.find({x:10}) //select * from t_test where x = 10

db.t_test.find({x:{$lt:10}}) //select * from t_test where x<10 

db.t_test.find({x:{$in:["01","03","10"]}}); // select * from t_test where x in ("01","03","10")

db.t_test.find({},{y:true}) //select y from t_test

db.t_test.find().count();

db.t_test.find({"address.city":"gz"}) //搜索嵌套文档address中city值为gz的记录

db.t_test.find({likes:"math"}) //搜索数组

db.t_test.ensureIndex({"address.city":1}) //在嵌套文档的字段上建立索引


4) 更新数据:


db.t_text.update({},{}) //第一个参数是查询对象,第二个是替代对象,要使用$set

db.t_test.update({name:"test"},{$set:{addr:"shenZheng"}});

db.t_test.find();


5) 数据删除:
db.t_test.remove({name:"test2"}); //删除数据

db.t_test.find();

show collections

db.t_test.drop(); //删除数据集合(表)

use test2

db.dropDatabase();


6)索引:
db.t_test.ensureIndex({productid:1}) //在productid上建立普通索引

db.t_test.ensureIndex({productid:1,plate:1}) //多字段索引

db.t_test.ensureIndex({productid,1},{unique:true}) //唯一索引


7) 备份与恢复:
mongodump.ext --help

mongodump.ext -d test -o ../data/backup/test //备份数据库test中所有的数据集合

mongorestore.exe --help

mongorestore.exe -d "test" D:\Cloud\NoSql\mongodb2\data\backup\test //恢复数据库test

mongorestore.exe -d test -c t_sysusers D:\Cloud\NoSql\mongodb2\data\backup\test\t_sysusers.bson //恢复数据库test中的表t_sysusers的数据


8) 数据导入导出:
json或cvs格式,每次一个collection

数据导出:mongoexport.exe --help

mongoexport.exe -d test -c t001 -o D:\Cloud\NoSql\mongodb2\data\backup\test_t001.json //导出test库的t001(集合)表数据

数据导入:mongoimport.exe --help

mongoimport.exe -d test -c t004 -drop  D:\Cloud\NoSql\mongodb2\data\backup\test_t001.json //从t001.json导入到t004(若果存在先drop)

9) 安全与认证:
use test2 //选择数据库

db.addUser("username","password") //普通权限,可读写

db.addUser("username","password",true) //可读、不可写

db.system.users.remove({user:"username"}) //删除用户

 其他语法:

>use test;

>j={name:"hongbo"};

>t={addr:"shanghai"};

>db.test.save(j);

>db.test.save(t);

>db.test.find();

>for(var i=1;i<200;i++) db.test.save({name:"name"+i,addr:"shanghai0"+i,phone:"020-"+i});

>db.test.find();

>db.test.find().count();

>var cursor = db.test.find().skip(100).limit(200);

>while (cursor.hasNext())printjson(cursor.next());

>db.test.find().forEach(pringjson);

>var arr = db.test.find().limit(10).toArray();

>arr[2];

>var cur = db.test.find();

>printjson(cur[5]);


10) 运算符:

$lt (小于) 

$lte (小于等于) 

$gt (大于) 

$gte (大于等于) 

$all (匹配数组中的所有值) 

$exists (检查字段是否存在) 

$mod (模数) 

$ne (不等) 

$in (匹配数组一个或多个值) 

$nin (匹配数组中的零值) 

$or (匹配一个或另一个查询) 

$nor (不匹配查询) 

$size (匹配具有预定数量元素的任何数组) 

$type (匹配具有指定 BSON 数据类型的值) 

$not (不等于)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值