启动MongoDB服务
[ ]里面的都是可选项,可以不写
mongodb://[username:password@]host1[:port1][,host2[:port2]][...][/[database][?options]]
例子:
mongodb://localhost
mongodb://admin:hwq123456@localhost/test
创建数据库
use DATABASE_NAME
连接数据库服务后,需要创建数据库
例如:
use hwqtest
查看数据列表:show dbs
mongodb有一个默认的数据库test,在没有创建数据库的时候,插入集合中的文档都会给到test数据库中
创建集合(表)后需要再插入一个文档(一行数据),集合才算真正创建,否则只是临时的
删除数据库
db.dropDatabase()
删除某个数据库需要现切换到那个数据库,use DATABASE_NAME
再用db.dropDatabase()
删除集合
db.collection.drop()
显示集合:show tables,但是最好用show collections,会更准确
db.tablename.drop()
创建集合
db.createCollection(name,options)
options可选参数:
| 字段 | 类型 | 描述 |
|---|---|---|
| capped | 布尔 | (可选)如果为 true,则创建固定集合。固定集合是指有着固定大小的集合,当达到最大值时,它会自动覆盖最早的文档。 当该值为 true 时,必须指定 size 参数。 |
| autoIndexId | 布尔 | (可选)如为 true,自动在 _id 字段创建索引。默认为 false。 |
| size | 数值 | (可选)为固定集合指定一个最大值,以千字节计(KB)。 如果 capped 为 true,也需要指定该字段。 |
| max | 数值 | (可选)指定固定集合中包含文档的最大数量。 |
需要现切换到某个数据库:use DATABASE_NAME
再db.createCollection(name,options)
查看已经创建的集合:show collections或者show tables
删除集合
db.collection.drop()
现切换到某个数据库:use DATABASE_NAME
再db.collectionname.drop()
插入文档
db.COLLECTION_NAME.insert(document)或者db.COLLECTION_NAME.save(document)
- save():如果 _id 主键存在则更新数据,如果不存在就插入数据。该方法新版本中已废弃,可以使用 db.collection.insertOne() 或 db.collection.replaceOne() 来代替。
- insert(): 若插入的数据主键已经存在,则会抛 org.springframework.dao.DuplicateKeyException 异常,提示主键重复,不保存当前数据。
新版本的insertOne()和insertMany()
insertOne用法:
db.collection.insertOne(
<document>,
{
writeConcern: <document>
}
)
insertMany用法:
db.collection.insertMany(
[ <document 1> , <document 2>, ... ],
{
writeConcern: <document>,
ordered: <boolean>
}
)
例子:
db.col.insert({title: 'MongoDB 教程',
description: 'MongoDB 是一个 Nosql 数据库',
by: '菜鸟教程',
url: 'http://www.runoob.com',
tags: ['mongodb', 'database', 'NoSQL'],
likes: 100
})
更新文档
例子:col为一个集合
db.col.update({'title':'MongoDB 教程'},{$set:{'title':'MongoDB'}})
可以看到标题(title)由原来的 "MongoDB 教程" 更新为了 "MongoDB"。
以上语句只会修改第一条发现的文档,如果你要修改多条相同的文档,则需要设置 multi 参数为 true。
db.col.update({'title':'MongoDB 教程'},{$set:{'title':'MongoDB'}},{multi:true})
删除文档
db.collection.remove(
db.collection.remove(
<query>,
{
justOne: <boolean>,
writeConcern: <document>
}
)
先插入数据:
db.col.insert({title: 'MongoDB 教程',
description: 'MongoDB 是一个 Nosql 数据库',
by: '菜鸟教程',
url: 'http://www.runoob.com',
tags: ['mongodb', 'database', 'NoSQL'],
likes: 100
})
查找数据:
db.col.find()
移除数据:有可能删除多条数据
db.col.remove({'title':'MongoDB 教程'})
查询文档
db.collection.find(query, projection)
如果你需要以易读的方式来读取数据,可以使用 pretty() 方法:
db.col.find().pretty()
查询语句比较:
| 操作 | 格式 | 范例 | RDBMS中的类似语句 |
|---|---|---|---|
| 等于 | {<key>:<value>} | db.col.find({"by":"菜鸟教程"}).pretty() | where by = '菜鸟教程' |
| 小于 | {<key>:{$lt:<value>}} | db.col.find({"likes":{$lt:50}}).pretty() | where likes < 50 |
| 小于或等于 | {<key>:{$lte:<value>}} | db.col.find({"likes":{$lte:50}}).pretty() | where likes <= 50 |
| 大于 | {<key>:{$gt:<value>}} | db.col.find({"likes":{$gt:50}}).pretty() | where likes > 50 |
| 大于或等于 | {<key>:{$gte:<value>}} | db.col.find({"likes":{$gte:50}}).pretty() | where likes >= 50 |
| 不等于 | {<key>:{$ne:<value>}} | db.col.find({"likes":{$ne:50}}).pretty() | where likes != 50 |
AND条件:
db.col.find({key1:value1, key2:value2}).pretty()
类似于:WHERE by='菜鸟教程' AND title='MongoDB 教程'
OR条件:db.col.find({$or:[{"by":"菜鸟教程"},{"title": "MongoDB 教程"}]}).pretty()
db.col.find(
{
$or: [
{key1: value1}, {key2:value2}
]
}
).pretty()
OR和AND联合使用:'where likes>50 AND (by = '菜鸟教程' OR title = 'MongoDB 教程')'
db.col.find({"likes": {$gt:50}, $or: [{"by": "菜鸟教程"},{"title": "MongoDB 教程"}]}).pretty()
本文详细介绍了MongoDB的基本操作,包括启动服务、创建与删除数据库、操作集合以及文档的插入、更新和删除。重点讲解了如何连接数据库、创建集合、删除数据库和集合,以及使用update和remove命令来更新和删除文档。示例丰富,帮助理解MongoDB的基础操作。
9153

被折叠的 条评论
为什么被折叠?



