1、下载mongodb:
http://www.mongodb.org/downloads
双击即可快速安装。
2、添加环境变量
3、cmd管理员运行开启mongodb服务
mongod.exe --dbpath "E:\Program Files\MongoDB\data" --logpath "E:\Program Files\MongoDB\log\mongodb.log" -install
4、cmd再打开一个dos进行连接:
mongo.exe //默认会连接到test 数据库
至此,mongodb的安装已经结束了。
下面介绍mongodb的操作快速入门:
1、启动数据库:
MongoDB 安装、配置完后,必须先启动它,然后才能使用它。怎么启动它呢?下面分展 示了 3 种方式来启动实例。
命令行启动
MongoDB 默认存储数据目录为/data/db/ (或者 c:\data\db), 默认端口 27017,默认 HTTP 端口 28017。当然你也可以修改成不同目录,只需要指定 dbpath 参数。
打开cmd,输入命令:
E:\Program Files\MongoDB\data指定的数据库文件目录
mongod.exe --dbpath "E:\Program Files\MongoDB\data"
选择使用的数据库:
use test //切换到test数据库
远程关闭mongod服务:
use admin //只有admin才可以关闭服务
db.shutdownServer()
或者可以在命令行打开的dos窗口直接:ctrl+c
连接数据库
打开一个dos窗口输入:
mongo.exe
创建数据库
use mydb //创建数据库mydb
刚创建完数据库是看不到的:
show dbs
插入一条文件后就可以看到了。
插入记录
db.mydb.save({name:"yuwei"})
或者
db.mydb.insert({name:"yuwei"})
有几点需要注意一下: 不需要预先创建一个集合.
1、在第一次插入数据时候会自动创建.
2、 在文档中其实可以存储任何结构的数据, 当然在实际应用我们存储的还是相同类型文 档的集合.
3、每次插入数据时候集合中都会有一个 ID, 名字叫 _id.
也可以在robomongo客户端界面上查看刚刚的操作效果:
插入多条记录:
for( var i = 1; i < 10; i++ ) db.things.save( { x:4, j:i } )
_id key的理解:
存储在 MongoDB 集合中的每个文档(document)都有一个默认的主键_id,这个主键名称是 固定的,它可以是 MongoDB 支持的任何数据类型,默认是 ObjectId。在关系数据库 schema 设计中,主键大多是数值型的,比如常用的 int 和 long,并且更通常的是主键的取值由数据 库自增获得,这种主键数值的有序性有时也表明了某种逻辑。反观 MongoDB,它在设计之 初就定位于分布式存储系统,所以它原生的不支持自增主键。
虽然_id 的类型可以自由指定,但是在同一个集合中必须唯一,如果插入重复的值的话,系统 将会抛出异常,具体如下:
db.things.insert({_id:3, name:"Bill_new", age:55})
查询记录:
普通查询:
var cursor = db.things.find(); //语句后面加分号表示,记录输入完执行,当前不执行
while (cursor.hasNext()) printjson(cursor.next());
db.things.find().forEach(printjson);
var cursor = db.things.find();
printjson(cursor[4]);
使用游标时候请注意占用内存的问题, 特是很大的游标对象, 有可能会内存溢出. 所以应 该用迭代的方式来输出. 下面的示例则是把游标转换成真实的数组类型:
var arr = db.things.find().toArray();
arr[5];
请注意这些特性只是在 MongoDB shell 里使用, 而不是所有的其他应用程序驱动都支持.
2、条件查询
下面的示例就是说明如何执行一个类似 SQL 的查询, 并演示了怎么在 MongoDB 里实现. 这 是在 MongoDB shell 里查询, 当然你也可以用其他的应用程序驱动或者语言来实现:
类似于语句:
SELECT * FROM things WHERE name="mongo"
mongodb中:
db.things.find({name:"yuwei"}).forEach(printjson);
类似于语句:
SELECT j FROM things WHERE x=4
mongodb中:
db.things.find({x:4}, {j:true}).forEach(printjson);
findOne()语法
为了方便考虑, MongoDB shell 避免游标可能带来的开销, 提供一个 findOne() 函数. 这个函 数和 find() 函数一样, 不过它返回的是游标里第一条数据, 或者返回 null,即空数据.
printjson(db.things.findOne({name:"yuwei"}));
通过 limit 限制结果集数量
如果需要限制结果集的长度, 那么可以调用 limit 方法. 这是强烈推荐解决性能问题的方法, 就是通过限制条数来减少网络传输, 例如:
db.things.find().limit(3);
修改数据
db.things.update({name:"yuwei"},{$set:{name:"weigod"}});
db.things.find();
删除数据
db.things.remove({name:"yuwei"});
常用工具集
MongoDB 在 bin 目录下提供了一系列有用的工具,这些工具提供了 MongoDB 在运维管理上 的方便。
bsondump: 将 bson 格式的文件转储为 json 格式的数据
mongo: 客户端命令行工具,其实也是一个 js 解释器,支持 js 语法
mongod: 数据库服务端,每个实例启动一个进程,可以 fork 为后台运行
mongodump/ mongorestore: 数据库备份和恢复工具
mongoexport/ mongoimport: 数据导出和导入工具
mongofiles: GridFS 管理工具,可实现二制文件的存取
mongos: 分片路由,如果使用了 sharding 功能,则应用程序连接的是 mongos 而不是 mongod
mongosniff: 这一工具的作用类似于 tcpdump,不同的是他只监控 MongoDB 相关的包请 求,并且是以指定的可读性的形式输出 mongostat: 实时性能监控工具
客户端GUI工具
1 MongoVUE
主页:http://www.mongovue.com/ 一个桌面程序,提供了对 MongoDB 数据库的基本操作,如查看、查询、更新、删除等,简 单易用,但是功能还比较弱,以后发展应该不错。
2 RoboMongo
若要了解mongodb的其他高级操作请看我的其他博客。
博客中还有使用c++ 进行mongodb连接的博客,可以参考,包括mongo-c-dirver的编译与代码实例。