声明:内容均为摘录,仅包括简单功能,请以官网最新中文教程为准
平台以win32为例,内容均来自官网,略加整理。
参考:
http://wiki.mongodb.org/display/DOCS/Quickstart+Windows
http://www.mongodb.org/display/DOCS/Tutorial
中文文档:
http://wiki.mongodb.org/display/DOCS/Home
下面的Translations的“中文”链接
1. 下载预编译的二进制
选择32bit和64bit
建议使用64位版本的Windows运行64位版本的MongoDB。
http://wiki.mongodb.org/display/DOCS/Downloads
解压后可以把目录更名为mongo-xxxxxxx以表示区分
2. 创建数据目录
Windows下默认的数据目录保存在MongoDB二进制所在盘中。
例如在C:\下的mongo都会保存在C:\data\db,
不过它不会自动创建,必须手工创建
C:\> mkdir \data
C:\> mkdir \data\db
3. 运行MongoDB服务器
最重要的二进制文件是:数据库服务器mongod.exe和管理工具mongo.exe
假设在C:\my_mongo_dir\bin中,则执行以下命令启动服务器
C:\> cd \my_mongo_dir\bin
C:\my_mongo_dir\bin > mongod
如果要以服务的形式运行,则使用类似的命令行
mongod --bind_ip 127.0.0.1 --logpath d:\mongo\logs --logappend --dbpath d:\mongo\data --directoryperdb --install
其中
mongod --install
mongod --service
mongod --remove
mongod --reinstall
可以对服务执行添加和删除操作。
--serviceName {arg}
--serviceUser {arg}
--servicePassword {arg}
设置服务的相关信息
4. 用mongo.exe测试简单JavaScript语句
C:\> cd \my_mongo_dir\bin
C:\my_mongo_dir\bin> mongo
> // the mongo shell is a javascript shell connected to the db
> 3+3
6
> db
test
> // the first write will create the db:
> db.foo.insert( { a : 1 } )
> db.foo.find()
{ _id : ..., a : 1 }
mongo.exe的详细的用法可以参考mongo.exe --help
5. (可选)用VS编译MongoDB的windows版本。
详见
http://wiki.mongodb.org/display/DOCS/Building+for+Windows
6. SQL与MongoDB的对照表
MongoDB拥有与关系型数据库(例如MySQL)相似的查询能力,但查询语法不同。
http://www.mongodb.org/display/DOCS/SQL+to+Mongo+Mapping+Chart
MongoDB的请求(包括索引键样式)以JSON (BSON)对象表达,
而且包含一个实际动词(如find)。
以下是SQL与Mongo请求语言语句的对照(可以运行于管理命令行mongo.exe)
(注:不一定等效,某些操作在不同的数据库有自己特有的规定,
例如MySQL,所以要格外小心)
(1) 创建
CREATE TABLE USERS (a Number, b Number)
(隐式,但也可以显式创建,例如一个封顶集合)
> # mongo shell
> db.createCollection("mycoll", {capped:true, size:100000})
> show collections
如果驱动支持,还可以
> db.runCommand( {createCollection:"mycoll", capped:true, size:100000} )
(2) 插入
INSERT INTO USERS VALUES(1,1)
> db.users.insert({a:1,b:1})
(3) 查询
SELECT a,b FROM users
> db.users.find({}, {a:1,b:1})
SELECT * FROM users
> db.users.find()
SELECT * FROM users WHERE age=33
> db.users.find({age:33})
SELECT a,b FROM users WHERE age=33
> db.users.find({age:33}, {a:1,b:1})
SELECT * FROM users WHERE age=33 ORDER BY name
> db.users.find({age:33}).sort({name:1})
SELECT * FROM users WHERE age>33
> db.users.find({'age':{$gt:33}})
> db.users.find({age:{$gt:33}})
SELECT * FROM users WHERE age<33
> db.users.find({'age':{$lt:33}})
> db.users.find({age:{$lt:33}})
SELECT * FROM users WHERE a=1 and b='q'
> db.users.find({a:1,b:'q'})
(4) 更新(20110311更新:包括删除?)
UPDATE users SET a=1 WHERE b='q'
> db.users.update({b:'q'}, {$set:{a:1}}, false, true)
(5) 索引
CREATE INDEX myindexname ON users(name)
> db.users.ensureIndex({name:1})
EXPLAIN SELECT * FROM users WHERE z=3
> db.users.find({z:3}).explain()
(6) 集合函数,排序和分页和其它查询
SELECT * FROM users ORDER BY name DESC
> db.users.find().sort({name:-1})
SELECT * FROM users LIMIT 10 SKIP 20
> db.users.find().limit(10).skip(20)
SELECT * FROM users LIMIT 1
> db.users.findOne()
SELECT DISTINCT last_name FROM users
> db.users.distinct('last_name')
SELECT COUNT(*y) FROM users
> db.users.count()
SELECT COUNT(*y) FROM users where AGE > 30
> db.users.find({age: {'$gt': 30}}).count()
SELECT COUNT(AGE) from users
> db.users.find({age: {'$exists': true}}).count()
更详细的用法见手册
http://www.mongodb.org/display/DOCS/Manual
7. 用mongo.exe管理数据库
双击运行mongo.exe
默认连接到localhost的test数据库
MongoDB shell version: 1.6.3
connecting to: test
>
切换数据库(可以是不存在的)
MongoDB不要求显式创建数据库的集,而是在插入数据时自动创建。
如果集合不存在,MongoDB会认为是空集合。
用use切换数据库不会立刻创建数据库,而是等到数据插入时才创建。
所以show dbs不会立刻显示该数据库
> use mydb
switched to db mydb
显示所有数据库
> show dbs
admin
local
test
查看帮助:
> help
db.help() help on db methods
db.mycoll.help() help on collection methods
rs.help() help on replica set methods
help connect connecting to a db help
help admin administrative help
help misc misc things to know
show dbs show database names
show collections show collections in current database
show users show users in current database
show profile show most recent system.profile entries wit
h time >= 1ms
use <db_name> set current database
db.foo.find() list objects in collection foo
db.foo.find( { a : 1 } ) list objects in foo where a == 1
it result of the last line evaluated; use to f
urther iterate
exit quit the mongo shell
创建变量,赋值,保存到集合中,然后读出来。
隐含以下规则:
不需要创建集;
结构动态可变,而且允许异构的对象放在一起;
自动添加_id字段;
ObjectID值是唯一的。
> j = { name : "mongo" };
{"name" : "mongo"}
> t = { x : 3 };
{ "x" : 3 }
> db.things.save(j);
> db.things.save(t);
> db.things.find();
{ "_id" : ObjectId("4c2209f9f3924d31102bd84a"), "name" : "mongo" }
{ "_id" : ObjectId("4c2209fef3924d31102bd84b"), "x" : 3 }
循环插入,显示时如果超过20条,显示前20条,可用it继续显示
find()返回游标对象
> for (var i = 1; i <= 20; i++) db.things.save({x : 4, j : i});
> db.things.find();
{ "_id" : ObjectId("4c2209f9f3924d31102bd84a"), "name" : "mongo" }
{ "_id" : ObjectId("4c2209fef3924d31102bd84b"), "x" : 3 }
{ "_id" : ObjectId("4c220a42f3924d31102bd856"), "x" : 4, "j" : 1 }
{ "_id" : ObjectId("4c220a42f3924d31102bd857"), "x" : 4, "j" : 2 }
{ "_id" : ObjectId("4c220a42f3924d31102bd858"), "x" : 4, "j" : 3 }
{ "_id" : ObjectId("4c220a42f3924d31102bd859"), "x" : 4, "j" : 4 }
{ "_id" : ObjectId("4c220a42f3924d31102bd85a"), "x" : 4, "j" : 5 }
{ "_id" : ObjectId("4c220a42f3924d31102bd85b"), "x" : 4, "j" : 6 }
{ "_id" : ObjectId("4c220a42f3924d31102bd85c"), "x" : 4, "j" : 7 }
{ "_id" : ObjectId("4c220a42f3924d31102bd85d"), "x" : 4, "j" : 8 }
{ "_id" : ObjectId("4c220a42f3924d31102bd85e"), "x" : 4, "j" : 9 }
{ "_id" : ObjectId("4c220a42f3924d31102bd85f"), "x" : 4, "j" : 10 }
{ "_id" : ObjectId("4c220a42f3924d31102bd860"), "x" : 4, "j" : 11 }
{ "_id" : ObjectId("4c220a42f3924d31102bd861"), "x" : 4, "j" : 12 }
{ "_id" : ObjectId("4c220a42f3924d31102bd862"), "x" : 4, "j" : 13 }
{ "_id" : ObjectId("4c220a42f3924d31102bd863"), "x" : 4, "j" : 14 }
{ "_id" : ObjectId("4c220a42f3924d31102bd864"), "x" : 4, "j" : 15 }
{ "_id" : ObjectId("4c220a42f3924d31102bd865"), "x" : 4, "j" : 16 }
{ "_id" : ObjectId("4c220a42f3924d31102bd866"), "x" : 4, "j" : 17 }
{ "_id" : ObjectId("4c220a42f3924d31102bd867"), "x" : 4, "j" : 18 }
has more
> it
{ "_id" : ObjectId("4c220a42f3924d31102bd868"), "x" : 4, "j" : 19 }
{ "_id" : ObjectId("4c220a42f3924d31102bd869"), "x" : 4, "j" : 20 }
可以显式保存游标变量,然后操作(用内置的tojson()可以美化文档)
> var cursor = db.things.find();
> while (cursor.hasNext()) printjson(cursor.next());
还可以使用forEach()执行循环(但需要定义一个专门的函数)
> db.things.find().forEach(printjson);
可以把游标当作数组使用。
此时所有数据的加载到内存,对于大的结果集可能会导致内存溢出。
所以尽量以迭代器形式使用
> var cursor = db.things.find();
> printjson(cursor[4]);
可以转换为数组(数组概念不适用于驱动,仅使用于交互界面)
> var arr = db.things.find().toArray();
> arr[5];
{ "_id" : ObjectId("4c220a42f3924d31102bd859"), "x" : 4, "j" : 4 }
由于MongoDB的游标是非快照的,
所以第一次和最后一次next()之间的操作可能影响也可能不影响查询结果。
此时需要使用锁住快照查询。
MongoDB具有与SQL相似的查询能力,
通常需要创建“查询文档”(即那个作为参数的大括号JSON对象)
例如:
SELECT * FROM things WHERE name="mongo"
> db.things.find({name:"mongo"}).forEach(printjson);
SELECT * FROM things WHERE x=4
> db.things.find({x:4}).forEach(printjson);
{ a:A, b:B, ... }的意思是
where a==A and b==B and ..."
参考http://www.mongodb.org/display/DOCS/Queries+and+Cursors
MongoDB还允许返回“部分文档”,方法是在find的第二个参数中指定文档的元素子集。
注意_id字段总是要返回
SELECT j FROM things WHERE x=4
> db.things.find({x:4}, {j:true}).forEach(printjson);
为方便处理游标,mongo和驱动提供findOne()查询文档。
和find()参数一样,但返回的不是游标,而是满足条件的第一个文档或者null。
这种方法高效,使数据库和客户端的工作减少,
> printjson(db.things.findOne({name:"mongo"}));
等效于find({name:"mongo"}).limit(1)
可以用limit()限制结果的大小。
好处和findOne()一样。
> db.things.find().limit(3);
如果想查询方法名,可以用help()
> db.help()
> db.whatever.help()
如果忽略参数表,则输出源代码
> printjson
function (x) {
print(tojson(x));
}
由于mongo是完全的JavaScript外壳,所以支持任何JavaScript函数,语法和类。
另外还定义自己的类和全局变量(例如db),
API列表见
http://api.mongodb.org/js/
-------------------------------------------
20110311更新:
更多见豆瓣
http://www.douban.com/group/mongodb/
因为本人是MySQL爱好者&菜鸟,所以暂时不够级别研究这个,
官网有完整的中文翻译文档,还提供快速参考卡片
http://www.10gen.com/reference
点进去按“Skip Form”跳过即可下载,
不过现在貌似没有中文版。
(怨念:为什么用JavaScript不用Lua的说~)
--------------------------------------------
20110312更新:
中文pdf见
http://www.10gen.com/conferences/mongobeijing2011
下面会议日程安排里的Slides链接
---------------------------------------------
20110317更新:
更改一个失效的链接
相关推荐
MongoDB 入门教程笔记
《mongodb入门》读书笔记
教程名称:MongoDB教程基础入门 课程目录:【】MongoDB教程基础入门-代码【】MongoDB教程基础入门01第一讲上【】MongoDB教程基础入门02第一讲下【】MongoDB教程基础入门03第二讲上【】MongoDB教程基础入门04第二讲...
教程名称:从浅入深学习 MongoDB视频教程全集 课程目录:【】MongoDB视频教程-00_MongoDB代码【】MongoDB视频教程01_第一讲_上【】MongoDB视频教程02_第一讲_下【】MongoDB视频教程03_第二讲_上【】MongoDB视频教程...
MongoDB 基础,涉及到CRUD,简单查询,文档中对每个MongoDB 属性提供一个简单的demo,另有管道查询操作,java代码实现操作MongoDB的简单例子。
MongoDB_学习笔记MongoDB_学习笔记MongoDB_学习笔记MongoDB_学习笔记MongoDB_学习笔记MongoDB_学习笔记MongoDB_学习笔记MongoDB_学习笔记MongoDB_学习笔记MongoDB_学习笔记MongoDB_学习笔记MongoDB_学习笔记MongoDB_...
MongoDB练习文件
MongoDB练习文件
本教材为redhat linux 4系统下安装mongodb 32位版本,mongodb是一个文件数据库,其他linux系统下安装都是类似的。
真实有效的mongodb视频教程地址 深入浅出 MongoDB 高清IT教程视频下载 1.1、-nosql与MongoDB.mp4 1.2、-MongoDB安装配置.mp4 1.3、-MongoDB?shell详.mp4 1.4、-MongoDB文档、集合、数据库的概念.mp4 1.5、-...
mongoDB笔记整理
Mongodb视频-燕十八 mongodb视频教程全集21讲+mongodb高级实战开发视频教程
这是辛星笔记之MongoDB教程,原视频是兄弟连的李强强讲师录制的。
包含MongoDB基础教程,pdf格式的,mongodb的Java驱动,mongodb例子代码,其中该教程是我自己编写的,错误在所难免,看好了再下,下了别骂人,谢谢合作
教程名称:MongoDB视频教程【3套】 资源太大,传百度网盘了,链接在附件中,有需要的同学自取。
MongoDB最详细学习笔记
mongoDB 的基础教程,mongoDB的数据库创建删除,以及集合的增删改查,索引等
一、MongoDB简介 3 二、MongoDB结构 3 二、MongoDB 数据库关系型(这里并不是值关系型数据库的关系) 3 1、MongoDB一对一关系型 3 2、MongoDB一对多关系型 4 3、MongoDB多对多关系型 4 三、创建数据库(mongodb_test...
MongoDB数据库教程.zip
mongodb学习笔记