本文共 5746 字,大约阅读时间需要 19 分钟。
在本文中,我们将以MongoDB数据库为背景,介绍一些常用的操作命令。对于刚接触MongoDB的读者,建议先熟悉数据库的部署过程,建议参考我们之前发布的《MongoDB部署指南》。
在使用MongoDB之前,首先需要连接到数据库。可以通过以下命令进行连接:
mongo IP:Port
其中,IP
是数据库所在的IP地址,Port
是端口号。例如,如果你要连接本地运行的MongoDB实例,可以使用以下命令:
mongo 192.168.112.130:27017
如果你想了解MongoDB中有哪些数据库存在,可以使用以下命令:
show dbs
执行后,你将看到所有存在的数据库列表。例如:
testrs:PRIMARY> show dbsadmin 0.000GBlocal 0.000GBtestrs:PRIMARY>
如果你想切换到某个特定的数据库,可以使用以下命令:
use database_name
例如:
testrs:PRIMARY> use yunweijiaswitched to db yunweijiatestrs:PRIMARY>
在MongoDB中,数据库是逻辑上的概念,并不会像传统数据库那样有固定的结构。创建或切换数据库非常简单。使用以下命令可以创建或切换到所需的数据库:
use database_name
例如:
testrs:PRIMARY> use yunweijiaswitched to db yunweijiatestrs:PRIMARY>
注意到,新创建的数据库在未插入数据之前是不会被显示出来的。为了确认数据库是否存在,可以使用以下命令:
show dbs
如果数据库中还没有数据,你可能会发现它没有被列出。为了让数据库显示出来,可以尝试插入一些数据。例如:
testrs:PRIMARY> db.yunweijia.insert({"name":"运维家"})WriteResult({ "nInserted" : 1 })testrs:PRIMARY> show dbsadmin 0.000GBlocal 0.000GByunweijia 0.000GBtestrs:PRIMARY>
如果你想删除一个数据库,需要确保你正在操作正确的数据库。使用以下命令可以删除当前数据库:
db.dropDatabase()
例如:
testrs:PRIMARY> use yunweijiaswitched to db yunweijiatestrs:PRIMARY> db.dropDatabase(){ "dropped" : "yunweijia", "ok" : 1 }testrs:PRIMARY> show dbsadmin 0.000GBlocal 0.000GBtestrs:PRIMARY>
MongoDB中的集合相当于传统数据库中的表。创建一个集合可以通过以下命令实现:
db.createCollection(name, options)
其中,name
是集合的名称,options
是可选参数。例如,如果你想创建一个固定大小的集合,可以使用以下命令:
db.createCollection("ceshi", { capped: true, size: 100 })
固定集合是一种特殊的集合类型,它会自动覆盖最早的文档,当达到最大容量时。创建集合后,你可以使用以下命令查看所有集合:
show collections
例如:
testrs:PRIMARY> use yunweijiaswitched to db yunweijiatestrs:PRIMARY> db.createCollection("ceshi"){ "ok" : 1 }testrs:PRIMARY> show collectionsceshitestrs:PRIMARY>
在MongoDB中,你不需要提前创建集合。插入数据时,MongoDB会自动为你创建所需的集合。例如:
testrs:PRIMARY> db.yunweijia.insert({"name":"运维家"})WriteResult({ "nInserted" : 1 })testrs:PRIMARY> show collectionsceshiyunweijiatestrs:PRIMARY>
如果你想删除一个集合,可以使用以下命令:
db.collection.drop()
例如:
testrs:PRIMARY> use yunweijiaswitched to db yunweijiatestrs:PRIMARY> show collectionsceshijiersuneryunweijiatestrs:PRIMARY> db.jier.drop()truetestrs:PRIMARY> show collectionsceshisuneryunweijiatestrs:PRIMARY>
在MongoDB中,文档是存储数据的基本单元。插入文档可以通过以下命令实现:
db.collection.insert(document)
文档必须是BSON格式。BSON是一种类似JSON的二进制数据交换格式。以下是一个简单的插入示例:
testrs:PRIMARY> db.col.insert({title: 'MongoDB 基础操作', description: 'MongoDB 是一个 Nosql 数据库', by: '运维家', url: 'http://www.baidu.com', tags: ['mongodb', 'database', 'NoSQL'], likes: 100})WriteResult({ "nInserted" : 1 })testrs:PRIMARY> db.col.find(){ "_id" : ObjectId("62011ae10e4263c83bd0dec8"), "title" : "MongoDB 基础操作", "description" : "MongoDB 是一个 Nosql 数据库", "by" : "运维家", "url" : "http://www.baidu.com", "tags" : [ "mongodb", "database", "NoSQL" ], "likes" : 100 }
如果你想将文档定义为变量后再插入,可以这样做:
document=({title: 'MongoDB 基础操作', description: 'MongoDB 是一个 Nosql 数据库', by: '运维家', url: 'http://www.baidu.com', tags: ['mongodb', 'database', 'NoSQL'], likes: 100});testrs:PRIMARY> db.col.insert(document)WriteResult({ "nInserted" : 1 })testrs:PRIMARY> db.col.find(){ "_id" : ObjectId("62011ae10e4263c83bd0dec8"), "title" : "MongoDB 基础操作", "description" : "MongoDB 是一个 Nosql 数据库", "by" : "运维家", "url" : "http://www.baidu.com", "tags" : [ "mongodb", "database", "NoSQL" ], "likes" : 100 }{ "_id" : ObjectId("62011c0f0e4263c83bd0dec9"), "title" : "MongoDB 基础操作", "description" : "MongoDB 是一个 Nosql 数据库", "by" : "运维家", "url" : "http://www.baidu.com", "tags" : [ "mongodb", "database", "NoSQL" ], "likes" : 100 }
如果你想更新某个文档的字段,可以使用以下命令:
db.collection.update(query, update, { upsert: true, multi: true })
其中,query
是更新的条件,update
是更新的操作。例如,以下命令会将某个文档的标题更新为“MongoDB 数据库”:
testrs:PRIMARY> db.col.update({'title':'MongoDB 基础操作'},{$set:{'title':'MongoDB 数据库'}})WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })testrs:PRIMARY> db.col.find().pretty(){ "title" : "MongoDB 数据库", "description" : "MongoDB 是一个 Nosql 数据库", "by" : "运维家", "url" : "http://www.baidu.com", "tags" : [ "mongodb", "database", "NoSQL" ], "likes" : 100 }{ "title" : "MongoDB 基础操作", "description" : "MongoDB 是一个 Nosql 数据库", "by" : "运维家", "url" : "http://www.baidu.com", "tags" : [ "mongodb", "database", "NoSQL" ], "likes" : 100 }
如果你想更新多个匹配的文档,可以设置 multi
参数为 true
:
testrs:PRIMARY> db.col.update({'title':'MongoDB 基础操作'},{$set:{'title':'MongoDB 数据库'}},{multi:true})
如果你想删除某个文档,可以使用以下命令:
db.collection.remove(query, { justOne: true })
其中,query
是删除的条件。例如,以下命令会删除所有标题为“MongoDB 基础操作”的文档:
testrs:PRIMARY> db.col.remove({'title':'MongoDB 基础操作'})WriteResult({ "nRemoved" : 2 })testrs:PRIMARY> db.col.find(){ "_id" : ObjectId("62011ae10e4263c83bd0dec8"), "title" : "MongoDB 数据库", "description" : "MongoDB 是一个 Nosql 数据库", "by" : "运维家", "url" : "http://www.baidu.com", "tags" : [ "mongodb", "database", "NoSQL" ], "likes" : 100 }
如果你只想删除第一条找到的文档,可以设置 justOne
参数为 true
:
testrs:PRIMARY> db.col.remove({'title':'MongoDB 基础操作'},1)
如果你想删除所有文档,可以使用以下命令(类似于 truncate
命令):
testrs:PRIMARY> db.col.remove({})
如果你想查询文档,可以使用以下命令:
db.collection.find(query, projection)
其中,query
是查询条件,projection
是投影条件。例如,以下命令可以查询所有文档:
testrs:PRIMARY> db.col.find().pretty(){ "_id" : ObjectId("62011ae10e4263c83bd0dec8"), "title" : "MongoDB 数据库", "description" : "MongoDB 是一个 Nosql 数据库", "by" : "运维家", "url" : "http://www.baidu.com", "tags" : [ "mongodb", "database", "NoSQL" ], "likes" : 100 }
如果你想只查询特定的字段,可以使用投影操作符。例如,以下命令可以只查询标题和描述:
testrs:PRIMARY> db.col.find({}, { 'title':1, 'description':1 }).pretty(){ "_id" : ObjectId("62011ae10e4263c83bd0dec8"), "title" : "MongoDB 数据库", "description" : "MongoDB 是一个 Nosql 数据库" }{ "_id" : ObjectId("62011c0f0e4263c83bd0dec9"), "title" : "MongoDB 基础操作", "description" : "MongoDB 是一个 Nosql 数据库" }
以上就是MongoDB的一些基本操作命令,包括连接数据库、创建/删除数据库、创建/删除集合、插入、更新、删除和查询文档等。通过合理使用这些命令,你可以对MongoDB进行 CRUD 操作,管理数据库和集合,实现数据的存储和检索。
转载地址:http://xiffk.baihongyu.com/