MongoDB 常用命令
info
Intro
MongoDB 是一个基于分布式文件存储的数据库。由 C++语言编写,旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。
概念
MongoDB 是非关系型数据库当中最像关系型数据库的,所以我们通过它与关系型数据库的对比,来了解下它的概念。
SQL 概念 | MongoDB 概念 | 解释 |
---|---|---|
database | database | 数据库 |
table | collection | 数据库表/集合 |
row | document | 数据记录行/文档 |
column | field | 数据字段/域 |
index | index | 索引 |
primary key | primary key | 主键,MongoDB 自动将id 字段设置为主键 |
Databases 操作
创建数据库,使用use
命令去创建数据库,当插入第一条数据时会创建数据库,例如创建一个test
数据库.
> use test
switched to db test
> db.article.insert({name:"MongoDB 教程"})
WriteResult({ "nInserted" : 1 })
> show dbs
admin 0.000GB
config 0.000GB
local 0.000GB
test 0.000GB
删除数据库,使用 db 对象中的dropDatabase()
方法来删除.
> db.dropDatabase()
{ "dropped" : "test", "ok" : 1 }
> show dbs
admin 0.000GB
config 0.000GB
local 0.000GB
Collections 操作
创建集合,使用 db 对象中的createCollection()
方法来创建集合,例如创建一个article
集合.
> use test
switched to db test
> db.createCollection("article")
{ "ok" : 1 }
> show collections
article
删除集合,使用 collection 对象的drop()
方法来删除集合,例如删除一个article
集合.
> db.article.drop()
true
> show collections
Documents CRUD
db.createCollection("oms_company_address")
Create Operations
db.collection.insertOne()
db.collection.insertMany()
db.oms_company_address.insertOne({
address_name: "62117 Berge Stravenue Apt. 275\\nLydamouth, MA 32445-1216",
send_status: 0,
receive_status: 0,
name: "Summer",
phone: "111-111-1111",
province: "Pennsylvania",
city: "Lake Daren",
region: "test",
detail_address: "test"
})
db.oms_company_address.insertMany([{
address_name: "92127 Arlie Square Suite 639\\nPort Stephan, SD 28855-0544",
send_status: 1,
receive_status: 1,
name: "Kattie",
phone: "111-111-1111",
province: "NewMexico",
city: "Hudsonville",
region: "test",
detail_address: "test"
},
{
address_name: "28195 Becker River\\nEast Keiratown, AL 78374",
send_status: 0,
receive_status: 1,
name: "Mireille",
phone: "111-111-1111",
province: "Kansas",
city: "Schmittchester",
region: "test",
detail_address: "test"
}
])
Read Operations
db.collection.find()
db.oms_company_address.find({ name: "Summer"})
Update Operations
db.collection.updateOne()
db.collection.updateMany()
db.collection.replaceOne()
db.oms_company_address.updateMany(
{ "phone": "111-111-1111"},
{ $set: { "phone" : "666-666-6666" } }
)
Delete Operations
db.collection.deleteOne()
db.collection.deleteMany()
db.oms_company_address.deleteMany({ name: "Summer" })
其他操作
Limit and Skip
- 读取指定数量的文档
db.collection.find().limit(NUMBER)
- 跳过指定数量的文档来读取
db.collection.find().limit(NUMBER).skip(NUMBER)
-- 只查询article集合中的2条数据
db.article.find().limit(2)
-- 从第二条开始,查询article集合中的2条数据
db.article.find().limit(2).skip(1)
Sort 排序
在 MongoDB 中使用sort()
方法对数据进行排序,sort()
方法通过参数来指定排序的字段,并使用 1 和-1 来指定排序方式,1 为升序,-1 为降序.
db.collection.find().sort({KEY:1})
-- 按article集合中文档的 likes 字段降序排列
db.article.find().sort({likes:-1})
正则表达式
MongoDB 使用$regex
操作符来设置匹配字符串的正则表达式,可以用来模糊查询,类似于 SQL 中的 like
操作.
-- 例如查询 title 中包含教程的文档
db.article.find({title:{$regex:"教程"}})