Skip to main content

MongoDB 常用命令

Intro

MongoDB 是一个基于分布式文件存储的数据库。由 C++语言编写,旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。

概念

MongoDB 是非关系型数据库当中最像关系型数据库的,所以我们通过它与关系型数据库的对比,来了解下它的概念。

SQL 概念MongoDB 概念解释
databasedatabase数据库
tablecollection数据库表/集合
rowdocument数据记录行/文档
columnfield数据字段/域
indexindex索引
primary keyprimary 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:"教程"}})