MongoDB 学习
MongoDB 环境搭建文档说明
1. 安装(ZIP安装)
选在下载ZIP文件
将zip文件解压放到盘符的根目录(如C:或D:),为了方便建议文件夹命名尽量简短如(d:\mongodb)
创建数据库文件的存放位置,比如 d:/mongodb/data/db 。启动mongodb服务之前需要必须创建数据库文件的存放文件夹,否则命令不会自动创建,而且不能启动成功。
在 d:\mongodb\data 下新建文件夹 log (存放日志文件)并且新建文件 mongodb.log ;在 d:\mongodb 新建文件mongo.config
用记事本打开 mongo.config 输入:
1
2dbpath=D:\mongodb\data\db
logpath=D:\mongodb\data\log\mongo.log用管理员身份打开cmd命令行,进入 D:\mongodb\bin 目录,输入如下的命令:
1
mongod --config D:\mongodb\mongo.config --install --bind_ip 0.0.0.0 --serviceName "MongoDB"
PS:
bind_ip
是4.0以后版本必须添加0.0.0.0
,这样远程才能访问该数据库,默认绑定127.0.0.1
,仅可本机访问在服务中启动MongonDB,默认端口是27017
2. 基本操作
增、删、查、改
增加
1
2
db.表名.insert({'字段名':'内容'});
db.表名.save({'字段名':'内容'});
PS:_id可以自已插入、一个表中不一定要字段都相同,虽然 insert 和 save 方法都可以插入数据,当默认的“_id”值已存在时,调用insert方法插入会报错;而save方法不会,会更新相同的_id所在行数据的信息。
查
1
2
3
4
5
6
7
8
9
10
11
12
13
14
大于:$gt
小于:$lt
大于等于:$gte
小于等于:$lte
非等于:$ne
正则表达式
eg:
db.user.find({'age':{'$gt':18}});
db.user.find({'age':{'$lt':18}});
db.user.find({'age':{'$gte':18}});
db.user.find({'age':{'$lte':18}});
db.user.find({'age':{'$ne':18}});
db.user.find({'name':/燕/})
查询第一条
1
2
3
db.表名.findOne(条件);
eg:
db.user.findOne({'name':'Tom'})
分页查询
1
2
3
db.表名.find(条件).skip(跳过数量).limit(查找数量);
eg:
db.user.find().skip(0).limit(100);
批量操作
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
// Example of a simple bulkWrite operation
var MongoClient = require('mongodb').MongoClient,
test = require('assert');
MongoClient.connect('mongodb://localhost:27017/test', function(err, db) {
// Get the collection
var col = db.collection('bulk_write');
col.bulkWrite([
{ insertOne: { document: { a: 1 } } }
, { updateOne: { filter: {a:2}, update: {$set: {a:2}}, upsert:true } }
, { updateMany: { filter: {a:2}, update: {$set: {a:2}}, upsert:true } }
, { deleteOne: { filter: {c:1} } }
, { deleteMany: { filter: {c:1} } }
, { replaceOne: { filter: {c:3}, replacement: {c:4}, upsert:true}}]
, {ordered:true, w:1}, function(err, r) {
test.equal(null, err);
test.equal(1, r.nInserted);
test.equal(2, r.nUpserted);
test.equal(0, r.nRemoved);
// Crud fields
test.equal(1, r.insertedCount);
test.equal(1, Object.keys(r.insertedIds).length);
test.equal(1, r.matchedCount);
test.ok(r.modifiedCount == 0 || r.modifiedCount == 1);
test.equal(0, r.deletedCount);
test.equal(2, r.upsertedCount);
test.equal(2, Object.keys(r.upsertedIds).length);
// Ordered bulk operation
db.close();
});
});
3. MongoDB导入导出以及数据库备份
- MongoDB数据导入与导出
1)导出工具:mongoexport
1、概念:
mongoDB中的mongoexport工具可以把一个collection导出成JSON格式或CSV格式的文件。可以通过参数指定导出的数据项,也可以根据指定的条件导出数据。
2、语法:
mongoexport -d dbname -c collectionname -o file --type json/csv -f field
参数说明:
-d :数据库名
-c :collection名
-o :输出的文件名
–type : 输出的格式,默认为json
-f :输出的字段,如果-type为csv,则需要加上-f “字段名”3、示例:
sudo mongoexport -d mongotest -c users -o /home/python/Desktop/mongoDB/users.json --type json -f "_id,user_id,user_name,age,status"
2) 数据导入:mongoimport
1、语法:
mongoimport -d dbname -c collectionname --file filename --headerline --type json/csv -f field
参数说明:
-d :数据库名
-c :collection名
–type :导入的格式默认json
-f :导入的字段名
–headerline :如果导入的格式是csv,则可以使用第一行的标题作为导入的字段
–file :要导入的文件
2、示例:
sudo mongoimport -d mongotest -c users --file /home/mongodump/articles.json --type json
- MongoDB备份与恢复
- 1)MongoDB数据库备份
1、语法:
mongodump -h dbhost -d dbname -o dbdirectory
参数说明:
-h: MongDB所在服务器地址,例如:127.0.0.1,当然也可以指定端口号:127.0.0.1:27017
-d: 需要备份的数据库实例,例如:test
-o: 备份的数据存放位置,例如:/home/mongodump/,当然该目录需要提前建立,这个目录里面存放>该数据库实例的备份数据。
2、实例:
1
2
3sudo rm -rf /home/momgodump/
sudo mkdir -p /home/momgodump
sudo mongodump -h 192.168.17.129:27017 -d itcast -o /home/mongodump/
2)MongoDB数据库恢复
1、语法:
mongorestore -h dbhost -d dbname --dir dbdirectory
参数或名:
-h: MongoDB所在服务器地址
-d: 需要恢复的数据库实例,例如:test,当然这个名称也可以和备份时候的不一样,比如test2
–dir: 备份数据所在位置,例如:/home/mongodump/itcast/
–drop: 恢复的时候,先删除当前数据,然后恢复备份的数据。就是说,恢复后,备份后添加修改的数据都会被删除,慎用!
2、实例:
mongorestore -h 192.168.17.129:27017 -d itcast_restore --dir /home/mongodump/itcast/