mongoDB基础文档

来源:互联网 发布:淘宝天猫京东哪个好 编辑:程序博客网 时间:2024/05/29 23:47
mongoDb官方文档:
http://www.mongodb.org/pages/viewpage.action?pageId=5079126


基础教程:

1下载与安装

下载:http://www.mongodb.org/downloads

安装:直接解压即可。

2启动

使用mongo.exerun启动即可,如下图所示。

LINUXWINDOWS系统下的使用大同小异,不同的地方主要是默认的数据存储目录。LINUX 类系统下存放在/data/db 下,而 WINDOWS会存放在C:\data\db下。可以在启动时使用--dbpath参数指定存储目录并启动。如:bin\mongod.exe--dbpathd:\data\mongo

常用启动参数:
run直接启动。例:./mongodrun
--dbpath
指定特定存储目录启动,若目录不存在则创建。例:./mongod--dbpath/var/data/mongo
--port
指定端口启动。例:./mongod--port12345
控制台的启动使用mongo.exe,如下图所示。

Email:MSN:wenpengsong@gmail.com- 2 -

文卓软件欢迎大家在www.tiyt.cn上讨论相关话题

3基本概念

MongoDBdatabases组成,databases由collections组成,collections由documents(相当于行)组成,而documentsfields(相当于列)组成。

MongoDB是异步写数据。

4常用命令

4.1调用命令
调用命令的方法db.help();若漏掉()则直接显示方法体。如下图所示。


可以看到方法的具体实现。是JavaScript程序。

4.2use

use demodb

创建demodb,不用担心demodb不会创建,当创建第一个collection时,demodb会自动创建。

4.3插入数据

db.unicorns.insert({name:'demo', sex: 'm', weight: 70})插入一个数据,collection为unicorns
使用db.getCollectionNames(),会得到unicornssystem.indexes。

system.indexes对每个DB都会有,用于记录index。Email:MSN:wenpengsong@gmail.com- 4 -

文卓软件欢迎大家在www.tiyt.cn上讨论相关话题

db.unicorns.find()会看到document。如下所示

>use demodb

switchedto db demodb

>db.unicorns.insert({name: 'demo', sex: 'm', weight: 70})

>db.getCollectionNames()

["system.indexes", "unicorns" ]

>db.unicorns.find()

{ "_id": ObjectId("4da6eea3a8d5cd3b72081cf2"), "name" : "demo", "sex" :"m", "w

eight" :70 }

>db.system.indexes.find()

{ "name": "_id_", "ns" : "demodb.unicorns", "key" : { "_id" : 1 }, "v" : 0}

>

> db.unicorns.insert({name: 'Leto', gender: 'm',home: 'Arrakeen', worm: false})

>

4.4查询数据先插入测试数据

>db.unicorns.find()

{ "_id": ObjectId("4da6eea3a8d5cd3b72081cf2"), "name" : "demo", "sex" :"m", "w

eight" :70 }

{ "_id": ObjectId("4da6f09ea8d5cd3b72081cf3"), "name" : "Leto", "gender" :"m",

"home" :"Arrakeen", "worm" : false }

db.unicorns.insert({name:'Horny', dob: new Date(1992,2,13,7,47), loves:['carrot','papaya'],

weight:600, gender: 'm', vampires: 63});

db.unicorns.insert({name:'Aurora', dob: new Date(1991, 0, 24, 13, 0), loves:['carrot','grape'],

weight:450, gender: 'f', vampires: 43});

db.unicorns.insert({name:'Unicrom', dob: new Date(1973, 1, 9, 22, 10),loves:['energon',

'redbull'],weight: 984, gender: 'm', vampires: 182});

db.unicorns.insert({name:'Roooooodles', dob: new Date(1979, 7, 18, 18, 44),loves:['apple'],

weight:575, gender: 'm', vampires: 99});

db.unicorns.insert({name:'Solnara', dob: new Date(1985, 6, 4, 2, 1), loves:['apple','carrot',

'chocolate'],weight:550, gender:'f', vampires:80});

db.unicorns.insert({name:'Ayna',dob: new Date(1998, 2, 7, 8, 30), loves: ['strawberry',

'lemon'],weight: 733, gender: 'f', vampires: 40});

db.unicorns.insert({name:'Kenny',dob: new Date(1997, 6, 1, 10, 42), loves: ['grape','lemon'],

weight:690, gender: 'm', vampires: 39});

db.unicorns.insert({name:'Raleigh', dob: new Date(2005, 4, 3, 0, 57), loves:['apple','sugar'],

weight:421, gender: 'm', vampires: 2});

db.unicorns.insert({name:'Leia', dob: new Date(2001, 9, 8, 14, 53), loves:['apple',

'watermelon'],weight: 601, gender: 'f', vampires: 33});

db.unicorns.insert({name:'Pilot', dob: new Date(1997, 2, 1, 5, 3), loves:['apple',

Email:MSN:wenpengsong@gmail.com

- 5-

文卓软件欢迎大家在www.tiyt.cn上讨论相关话题

'watermelon'],weight: 650, gender: 'm', vampires: 54});

db.unicorns.insert({name:'Nimue', dob: new Date(1999, 11, 20, 16, 15),loves:['grape',

'carrot'],weight: 540, gender: 'f'});

db.unicorns.insert({name:'Dunx', dob: new Date(1976, 6, 18, 18, 18), loves:['grape',

'watermelon'],weight: 704, gender: 'm', vampires: 165});

4.4.1查询返回document

使用查询

db.unicorns.find({name:'Dunx'})

其他说明:
$lt,$lte, $gt, $gte and $ne分别表示小于、小于等于、大于、大于等于、

不等于

db.unicorns.find({gender: {$ne: 'f'}, weight: {$gte:701}})

$exists用于表示field是否存在
db.unicorns.find({vampires:{$exists: false}})
or和and
db.unicorns.find({gender:'f', $or: [{loves: 'apple'}, {loves: 'orange'}, {weight: {$lt:500}}]})

4.4.2查询返回fielddb.unicorns.find(null,{name: 1})

只返回name这个field,具体如下所示:

>db.unicorns.find(null, {name: 1})

{ "_id": ObjectId("4da6f22da8d5cd3b72081cf7"), "name" : "Aurora"}

{ "_id": ObjectId("4da6f22da8d5cd3b72081cf6"), "name" : "Horny"}

{ "_id": ObjectId("4da6f22da8d5cd3b72081cf8"), "name" : "Unicrom"}

{ "_id": ObjectId("4da6f22da8d5cd3b72081cf9"), "name" : "Roooooodles"}

{ "_id": ObjectId("4da6f22da8d5cd3b72081cfa"), "name" : "Solnara"}

{ "_id": ObjectId("4da6f22da8d5cd3b72081cfb"), "name" : "Ayna"}

{ "_id": ObjectId("4da6f22da8d5cd3b72081cfc"), "name" : "Kenny"}

{ "_id": ObjectId("4da6f22da8d5cd3b72081cfd"), "name" : "Raleigh"}

{ "_id": ObjectId("4da6f22da8d5cd3b72081cfe"), "name" : "Leia"}

{ "_id": ObjectId("4da6f22da8d5cd3b72081cff"), "name" : "Pilot"}

{ "_id": ObjectId("4da6f22da8d5cd3b72081d00"), "name" : "Nimue"}

{ "_id": ObjectId("4da6f231a8d5cd3b72081d01"), "name" : "Dunx"}

>db.unicorns.find(null, {name: 1,_id:0})

{ "name": "Aurora" }

{ "name": "Horny" }

{ "name": "Unicrom" }

{ "name": "Roooooodles" }

{ "name": "Solnara" }

{ "name": "Ayna" }

Email:MSN:wenpengsong@gmail.com- 6 -

文卓软件欢迎大家在www.tiyt.cn上讨论相关话题

{ "name": "Kenny" }

{ "name": "Raleigh" }

{ "name": "Leia" }

{ "name": "Pilot" }

{ "name": "Nimue" }

{ "name": "Dunx" }

>

4.4.3结果排序

//heaviestunicorns first db.unicorns.find().sort({weight: -1})
//by vampire name then vampire kills:db.unicorns.find().sort({name: 1, vampires: -1}) 1
表示升序,-1表示降序

4.4.4分页查询
db.unicorns.find().sort({weight:-1}).limit(2).skip(1)

得到第二个和第三个。limit规定查询个数,skip 规定忽略几个。4.4.5查询数量

db.unicorns.count({vampires:{$gt: 50}})

或者

db.unicorns.find({vampires:{$gt: 50}}).count()

4.5删除数据db.unicorns.remove()

如下面所示。

>

4.6更新数据(与关系型差异较大)

db.unicorns.update({name:'Roooooodles'}, {weight: 590})

注意:此语句执行后,先查询name是'Roooooodles'的所有数据,然后将name是'Roooooodles'的整个document都替换为{weight:590}。

>db.unicorns.remove()

>db.unicorns.find()

Email:MSN:wenpengsong@gmail.com- 7 -

文卓软件欢迎大家在www.tiyt.cn上讨论相关话题

db.unicorns.insert({name:'Roooooodles', dob: new Date(1979, 7, 18, 18, 44),loves:

['apple'],weight: 575, gender: 'm', vampires: 99});

整个替换为

{weight: 590}

执行$set,不会替换原有数据。

后会还原,但{weight:590}不会被替换,因为没有$set因此正确的更新方式如下
db.unicorns.update({name:'Roooooodles'}, {$set: {weight: 590}})

4.6.1增加field

db.unicorns.update({name:'Pilot'}, {$inc: {vampires: -2}}) $inc增加或减少数字
db.unicorns.update({name:'Aurora'}, {$push: {loves: 'sugar'}}) $push增加数组元素

$pop减少数组元素4.6.2 upset

若存在更新,否则添加

db.hits.update({page:'unicorns'}, {$inc: {hits: 1}}, true);db.hits.find();
使用第三个参数设置是否true(upset),默认是false

4.6.3批量更新

db.unicorns.update({},{$set: {vaccinated: true }}); db.unicorns.find({vaccinated:true});
不会将所有的数据的vaccinated都更新为true若将所有的数据的vaccinated都更新为true,则如下:db.unicorns.update({}, {$set: {vaccinated: true }}, false, true);db.unicorns.find({vaccinated: true});

4.7索引

创建索引的方式

db.unicorns.ensureIndex({name:1})

删除索引的方式

db.unicorns.update({weight:590}, {$set: {name: 'Roooooodles', dob: new Date (1979, 7,18,

18, 44),loves: ['apple'], gender: 'm', vampires: 99}})

Email:MSN:wenpengsong@gmail.com

- 8-

文卓软件欢迎大家在www.tiyt.cn上讨论相关话题

db.unicorns.dropIndex({name:1})

创建独立索引

db.unicorns.ensureIndex({name:1}, {unique: true})

创建联合索引

db.unicorns.dropIndex({name:1, vampires: -1})

5其他
5.1使用web获得mongoDB的信息

使用

http://localhost:28017/

获得MongoDB的信息。

5.2数据备份和恢复

使用mongodump.exe备份数据库
mongodump--db learn --out backup
使用mongorestore.exe恢复数据库
mongorestore--collection unicorns backup/learn/unicorns.bson

5.3导入导出数据

JSONCSV格式导入导出mongoexport.exemongoimport.exemongoexport --db learn -collection unicorns
mongoexport --db learn -collection unicorns --csv -fieldsname,weight,vampires

6使用MongoDB什么时候使用MongoDB?

  针对关系不是很紧密并且数据量较大的数据,例如股票数据。

Email:MSN:wenpengsong@gmail.com- 9 - 

原创粉丝点击