MongoDB

  • 查看版本 mongod --version
  • 从 4.4 版本开始 db 和 tool 分离了

历史

4.4
4.2 2019
4.0 2018
3.6 2017

YUM方式安装

安装

1
2
3
4
5
6
7
8
9
10
vi /etc/yum.repos.d/mongodb-org-4.4.repo

[mongodb-org]
name=MongoDB Repository
baseurl=https://mirrors.aliyun.com/mongodb/yum/redhat/$releasever/mongodb-org/4.4/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.4.asc

yum install -y mongodb-org

启动

1
2
3
service mongod start
service mongod stop
service mongod restart

To prevent unintended upgrades

1
2
vi /etc/yum.conf
exclude=mongodb-org,mongodb-org-server,mongodb-org-shell,mongodb-org-mongos,mongodb-org-tools

auto boot
chkconfig mongod on

Tarball方式安装

1
2
3
4
5
6
7
8
9
10
sudo yum install libcurl openssl

cd ~/download
wget mongodb-linux-x86_64-rhel70-4.4.0.tgz
tar xzvf mongodb-linux-x86_64-rhel70-4.4.0.tgz
cp mongodb-linux-x86_64-rhel70-4.4.0/bin/* /usr/local/bin/

wget mongodb-database-tools-rhel70-x86_64-100.1.1.tgz
tar xzvf mongodb-database-tools-rhel70-x86_64-100.1.1.tgz
cp mongodb-database-tools-rhel70-x86_64-100.1.1/bin/* /usr/local/bin/

启动

1
2
3
4
5
6
7
mkdir -p /var/lib/mongo
mkdir -p /var/log/mongodb
mongod --dbpath /var/lib/mongo --logpath /var/log/mongodb/mongod.log --fork

mongod -f /etc/mongod.conf &

mongod --shutdown -f /etc/mongod.conf

使用

登录

1
mongo --host ip

监控

1
2
mongostat
mongotop

数据库

1
2
3
4
5
show dbs
use dbname
db.dropDatabase()

db.serverStatus().connections

文档

1
2
3
4
show collections
db.createCollection(name, options)
db.collection.drop()
db.collection.renameCollection("record")

查询文档

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
db.collection.find( {} ).limit(5)
db.collection.find( { status: "D" } )
db.collection.find( { status: { $in: [ "A", "D" ] } } )
db.collection.find( { status: "A", qty: { $lt: 30 } } )
db.collection.find( { $or: [ { status: "A" }, { qty: { $lt: 30 } } ] } )
db.collection.find( {
status: "A",
$or: [ { qty: { $lt: 30 } }, { item: /^p/ } ]
} )

status: "D"
status: { $in: [ "A", "D" ] } }
qty: { $lt: 30 }
$or: [ { qty: { $lt: 30 } }, { item: /^p/ } ]
exec_time: {$lt: ISODate('2020-07-23T01:00:00.000Z')}

插入

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
db.test.insert({
date1: new Date(),
date2: new Date("2020-01-01"),
date2: new Date("2020-01-01T12:00:01.123"),
date2: new Date("2020-01-01T12:00:01.123Z")
})

db.collection.insertOne(
{ item: "canvas", qty: 100, tags: ["cotton"], size: { h: 28, w: 35.5, uom: "cm" } }
)
db.collection.insertMany([
{ item: "journal", qty: 25, size: { h: 14, w: 21, uom: "cm" }, status: "A" },
{ item: "notebook", qty: 50, size: { h: 8.5, w: 11, uom: "in" }, status: "A" },
{ item: "paper", qty: 100, size: { h: 8.5, w: 11, uom: "in" }, status: "D" },
{ item: "planner", qty: 75, size: { h: 22.85, w: 30, uom: "cm" }, status: "D" },
{ item: "postcard", qty: 45, size: { h: 10, w: 15.25, uom: "cm" }, status: "A" }
]);

更新

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
db.collection.updateOne()
db.collection.updateMany(
{ age: { $lt: 18 } },
{ $set: { status: 'reject' } }
)

db.scoreSearchLog_20200723.updateMany(
{
'resultCode': '500',
'exec_time': {$lt: ISODate('2020-07-23T01:00:00.000Z')}
},
{ $set: { 'resultCode': '300' } }
)

db.collection.replaceOne(
{ "name": "Central Perk Cafe" },
{ "name": "Central Pork Cafe", "Borough" : "Manhattan" }
)

删除

1
2
3
4
db.collection.deleteOne()
db.collection.deleteMany(
{ status: 'reject' }
)

排序

1
db.collection.sort({'exec_time': -1}).count()

索引

1
2
db.collection.createIndex({'exec_time': -1})
db.collection.getIndexes()

参考

Install MongoDB Community on Red Hat or CentOS using .tgz Tarball
Install MongoDB Community Edition on Red Hat Enterprise or CentOS Linux