一、基础语法归纳
(1)创建数据库
use DATABASE_NAME <数据库名>
注意: 在 MongoDB 中,集合只有在内容插入后才会创建! 就是说,创建集合(数据表)后要再插入一个文档(记录),集合才会真正创建。
(2)查看所有数据库
show dbs
(3)删除数据库
切换到要删除的数据库:db DATABASE_NAME;
然后执行:
db.dropDatabase()
(4)创建集合
db.createCollection("COLLECTION_NAME",options)
options 可以是如下参数:
字段 | 类型 | 描述 |
---|---|---|
capped | 布尔 | (可选)如果为 true,则创建固定集合。固定集合是指有着固定大小的集合,当达到最大值时,它会自动覆盖最早的文档。 当该值为 true 时,必须指定 size 参数。 |
autoIndexId | 布尔 | 3.2 之后不再支持该参数。(可选)如为 true,自动在 _id 字段创建索引。默认为 false。 |
size | 数值 | (可选)为固定集合指定一个最大值,即字节数。 如果 capped 为 true,也需要指定该字段。 |
max | 数值 | (可选)指定固定集合中包含文档的最大数量。 |
db.createCollection("myMongoDB", { capped : true, autoIndexId : true, size :
6142800, max : 10000 } )
(5)删除集合
db.COLLECTION_NAME.drop()
(6)展示集合
show collections
(7)插入文档
MongoDB 使用 insert() 或 save() 方法向集合中插入文档。
- save():如果 _id 主键存在则更新数据,如果不存在就插入数据。该方法新版本中已废弃,可以使用 db.collection.insertOne() 或 db.collection.replaceOne() 来代替。
- insert(): 若插入的数据主键已经存在,则会抛 org.springframework.dao.DuplicateKeyException 异常,提示主键重复,不保存当前数据。
db.COLLECTION_NAME.insert(document)
或
db.COLLECTION_NAME.save(document)
3.2 版本之后新增了db.collection.insertOne() 和 db.collection.insertMany()。
db.collection.insertOne() 用于向集合插入一个新文档,db.collection.insertMany() 用于向集合插入一个多个文档。
db.collection.insertOne(
<document>,
{
writeConcern: <document>
}
)
db.collection.insertMany(
[ <document 1> , <document 2>, ... ],
{
writeConcern: <document>,
ordered: <boolean>
}
)
document | 要写入的文档 |
writeConcern | 写入策略,默认为 1,即要求确认写操作,0 是不要求 |
ordered | 指定是否按顺序写入,默认 true,按顺序写入 |
(8)更新文档
MongoDB 使用 update() 和 save() 方法来更新集合中的文档。update() 方法用于更新已存在的文档,save() 方法通过传入的文档来替换已有文档,_id 主键存在就更新,不存在就插入。
使用Update()方法:
db.collection.update(
<query>,
<update>,
{
upsert: <boolean>,
multi: <boolean>,
writeConcern: <document>
}
)
使用Save()方法:
db.collection.save(
<document>,
{
writeConcern: <document>
}
)
参数说明:
- query:update的查询条件,类似sql update查询内where后面的。
- update: update的对象和一些更新的操作符(如$,$inc...)等,也可以理解为sql update查询内set后面的
- upsert: 可选,这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。
- multi: 可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。
- writeConcern:可选,抛出异常的级别。
- document:文档数据。
(9)删除文档
remove() 方法的基本语法格式如下所示:
db.collection.remove(<query>,<justOne>)
如果你的 MongoDB 是 2.6 版本以后的,语法格式如下:
db.collection.remove(
<query>,
{
justOne: <boolean>,
writeConcern: <document>
}
)
- query:(可选)删除的文档的条件。
- justOne: (可选)如果设为 true 或 1,则只删除一个文档,如果不设置该参数,或使用默认值 false,则删除所有匹配条件的文档。
- writeConcern:(可选)抛出异常的级别。
(10) 查询文档
db.collection.find(query, projection)
- query :可选,使用查询操作符指定查询条件
- projection :可选,使用投影操作符指定返回的键。查询时返回文档中所有键值, 只需省略该参数即可(默认省略)。
如果你需要以易读的方式来读取数据,可以使用 pretty() 方法,语法格式如下:
db.col.find().pretty()
And条件:MongoDB 的 find() 方法可以传入多个键(key),每个键(key)以逗号隔开,即常规 SQL 的 AND 条件。
db.col.find({key1:value1, key2:value2}).pretty()
OR条件:MongoDB OR 条件语句使用了关键字 $or。
db.col.find(
{
$or: [
{key1: value1}, {key2:value2}
]
}
).pretty()
(11)条件语句
条件语句 | |
$gt | 大于> |
$lt | 小于< |
$gte | 大于等于>= |
$lte | 小于等于<= |