MongoDB Introduction
Author: Zreal 曾令泽
Student_ID: 1120162062
Platform: Mac OS
Install MongoDB
可参考官方文档
但是在参考官方文档的过程中出现了问题,在键入
1
$ mongod --config /usr/local/etc/mongod.conf
长时间没有反应,最后不得已参考网上的博客操作成功
Step one
用homebrew安装
1
2
$ brew tap mongodb/brew
$ brew install mongodb
此时会有提示:配置文件,日志文件,数据文件的默认位置
- the configuration file (
/usr/local/etc/mongod.conf
) - the
log directory path
(/usr/local/var/log/mongodb
) - the
data directory path
(/usr/local/var/mongodb
)
按照官方文档应该运行mongodb
1 $ mongod --config /usr/local/etc/mongod.conf但是进行输入后电脑一只无反应
Step two
重新配置日志文件及数据文件的路径
配置/usr/local/etc/mongod.conf
文件如下
1
2
3
4
5
6
7
8
systemLog:
destination: file
path: /data/db/mongod.log
logAppend: true
storage:
dbPath: /data/db
net:
bindIp: 127.0.0.1
创建 /data/db
文件夹及/data/db/mongod.log
文件
给/data/db 文件夹赋予权限
1
$ sudo chown id -u /data/db
启动mongod 服务器,因为自定义了储存路径 要使用 —dbpath
1
$ mongod --dbpath /data/db
Step three
开启mongo shell(加入环境变量后)
1
$ mongo
Introduction to Mongo shell command
创建数据库
1
2
3
4
> use newDB
switched to db newDB
> db
newDB
查看当前数据库
1
2
3
4
5
6
> db.stats()
# 查看当前数据库状态
> db.getName()
# 查看当前数据库名字
> db.version
# 查看mongodb 版本
查看所有数据库
1
> show dbs
刚刚创建的数据库,如果该数据库里面没有内容,show dbs 不会显示该数据库
创建集合
1
> db.createColletion(name,options)
option 又如下参数
字段 | 类型 | 描述 |
---|---|---|
capped | 布尔 | (可选)如果为 true,则创建固定集合。固定集合是指有着固定大小的集合,当达到最大值时,它会自动覆盖最早的文档。 当该值为 true 时,必须指定 size 参数。 |
autoIndexId | 布尔 | (可选)如为 true,自动在 _id 字段创建索引。默认为 false。 |
size | 数值 | (可选)为固定集合指定一个最大值(以字节计)。 如果 capped 为 true,也需要指定该字段。 |
max | 数值 | (可选)指定固定集合中包含文档的最大数量。 |
或者直接向表中插入数据,数据库会自动呢新建一个Collection
1
> db.newCollection.insertOne(document)
插入文档
1
2
3
4
> db.collection.insertOne(document)
#插入一条document
> db.collection.insertMany([document1,document2,document3])
#插入多条document
查询文档
1
2
3
4
> db.collection.find(<query>)
#<query>查询语句
> db.collection.find()
#全表查询
修改更新文档
1
2
3
4
5
> db.collection.update( <query> , <update>, {
upsert: <boolean>,
multi: <boolean>,
writeConcern: <document>
})
- query : update的查询条件,类似sql update查询内where后面的。
- update : update的对象和一些更新的操作符(如$,$inc…)等,也可以理解为sql update查询内set后面的
- upsert : 可选,这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。
- multi : 可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。
- writeConcern :可选,抛出异常的级别。
1
> db.collection.update({item:"ame"},{$set:{name:zlz}})
删除数据库
1
2
> db.dropDatabase()
# 删除当前数据库
删除集合
1
2
> db.Onecollection.drop
#删除Onecollection 集合
删除文档
1
2
3
4
> db.collection.deleteOne(<query>)
#删除一条文档
> db.collection.deleteMany(<query>)
#删除所有符合条件的文档
Mongon Programming in Node.js
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
34
35
36
37
38
MongoClient.connect(url, { useNewUrlParser: true }, function(err, db){
var names=[
'Yolanda',
'Iska',
'Malone',
'Frank',
'Foxton',
'Pirate',
'Poppelhoffen',
'Elbow',
'Fluffy',
'Paphat'
]
var randName=function(){
var n=names.length;
return [
names[Math.floor(Math.random()*n)],
names[Math.floor(Math.random()*n)]
].join(' ');
}
var randAge=function(n){
return Math.floor(Math.random()*n);
}
var dbase=db.db("test");
for(var i=0;i<100;i++){
var person={
name:randName(),
age:randAge(100)
}
if(Math.random()>0.8){
person.cat={
name:randName(),
age:randAge(18)
}}
dbase.collection("people").insertOne(person);
};
db.close();
});
Requirement
1) 简要描述以上代码功能 2) 只查看 1 条文档 3) 只查看 1 条文档,且在显示的结果中隐去_id 字段 4) 查看上述代码创建的文档数 5) 查看所有年龄大于 90 的人,并按年龄倒序输出 6) 查看所有年龄大于 12 小于 18 的人 7) 查看所有养猫且猫的年龄大于 10 岁的人 8) 统计所有养描的人的个数
1)
randName 随机函数随机得到 一个有 姓和名的 名字
randAge 随机函数随机得到1-n的一个年龄
然后插入100条数据条数据
2)
1
> db.people.findOne()
3)
1
> db.people.findOne({},{_id:0})
4)
1
> db.people.count()
5)
1
> db.people.find({age:{$gr:90}}).sort(age:-1)
6)
1
> db.people.find({age:{$gt:12,$gt:18}})
7)
1
> db.people.find({"cat.age":{$gt:10}})
8)
1
> db.people.find({"cat":{$exists:true}}).count()