如何在MongoDB中创建、检索、更新和删除记录
介绍
MongoDB 是现代 Web 应用程序中常用的免费开源 NoSQL 文档数据库。 在这个简短的教程中,您将探索如何在 MongoDB 中处理数据。 您将创建、检索、更新和删除记录。
先决条件
要完成本教程,您需要安装 MongoDB,您可以按照 如何在 Ubuntu 18.04 上安装 MongoDB。
创建数据库
在运行 MongoDB 的服务器上,键入 mongo
以打开与数据库的连接:
mongo
看到 >
符号后,您就可以创建第一个数据库并开始添加记录了。
让我们创建一个个人数据库来存储有关用户的一些数据。
我们的第一个命令 use userdb
创建了一个名为“userdb”的新数据库,您可以将任何您想要的名称放在 use <databasename>
格式中。
use userdb
您可以使用 db
命令验证您当前使用的数据库,在我们的例子中返回“userdb”:
db
Outputuserdb
现在您的数据库已经创建,您可以创建一些 JSON 结构的文档来将数据存储在您的数据库中。
执行以下命令将一些数据插入数据库:
db.people.insert({ name: "Andrew", age: 33, hobbies: ["Coding", "Gaming", "Cooking"], hungry: false})
您将收到 WriteResult
通知,告知您插入成功:
OutputWriteResult({ "nInserted" : 1 })
您可以使用多种数据类型,包括字符串、数字、数组和布尔值。 Key
不需要双引号。
检索数据
一旦您的集合中有数据,您就可以开始使用 .find(<parameters>)
搜索和过滤该数据
要验证您的数据是否已添加到“人员”文档,请使用 find()
语法。 在 MongoDB 控制台中执行此命令:
db.people.find()
此命令显示当前与“人员”文档关联的所有数据。
Output{ "_id" : ObjectId("5c08c98f3d828385a2162d94"), "name" : "Andrew", "age" : 33, "hobbies" : [ "Coding", "Gaming", "Cooking" ], "hungry" : false }
如果要将其转换为漂亮的 JSON 格式,请在 .find()
之后使用 .pretty()
:
db.people.find().pretty()
Output{ "_id" : ObjectId("5c08c98f3d828385a2162d94"), "name" : "Andrew", "age" : 33, "hobbies" : [ "Coding", "Gaming", "Cooking" ], "hungry" : false }
当您添加新记录时,该 Mongo 将自动创建一个 _id
键供您以后参考。
尝试添加更多数据,然后我们将着手修改和搜索数据。
db.people.insert({ name: "Riley", age: 3, hobbies: ["Sleeping", "Barking", "Snuggles"], hungry: true}) db.people.insert({ name: "You", age: 30, hobbies: ["Coding", "Reading DigitalOcean Articles", "Creating Droplets"], hungry: true})
例如,如果我只想查找那些饥饿的人的记录:
db.people.find({ hungry: true }).pretty()
Output{ "_id" : ObjectId("5c08cbea3d828385a2162d95"), "name" : "Riley", "age" : 3, "hobbies" : [ "Sleeping", "Barking", "Snuggles" ], "hungry" : true } { "_id" : ObjectId("5c08cc2e3d828385a2162d96"), "name" : "You", "age" : 30, "hobbies" : [ "Coding", "Reading DigitalOcean Articles", "Creating Droplets" ], "hungry" : true }
或按特定爱好:
db.people.find({ hobbies: "Coding" }).pretty()
Output{ "_id" : ObjectId("5c08c98f3d828385a2162d94"), "name" : "Andrew", "age" : 33, "hobbies" : [ "Coding", "Gaming", "Cooking" ], "hungry" : false } { "_id" : ObjectId("5c08cc2e3d828385a2162d96"), "name" : "You", "age" : 30, "hobbies" : [ "Coding", "Reading DigitalOcean Articles", "Creating Droplets" ], "hungry" : true }
更新数据
要修改数据,请使用 .update()
函数。 但首先让我们看看我们的数据,看看我们想要改变什么:
db.people.find().pretty()
Output{ "_id" : ObjectId("5c08c98f3d828385a2162d94"), "name" : "Andrew", "age" : 33, "hobbies" : [ "Coding", "Gaming", "Cooking" ], "hungry" : false } { "_id" : ObjectId("5c08cbea3d828385a2162d95"), "name" : "Riley", "age" : 3, "hobbies" : [ "Sleeping", "Barking", "Snuggles" ], "hungry" : true } { "_id" : ObjectId("5c08cc2e3d828385a2162d96"), "name" : "You", "age" : 30, "hobbies" : [ "Coding", "Reading DigitalOcean Articles", "Creating Droplets" ], "hungry" : true }
像这样修改第三条记录的名称:
db.people.update({ name: "You" }, {$set: { name: "Sammy" }})
语句的第一部分指定要搜索的更新内容,第二部分是要设置的新值。 您会注意到使用此命令,有 1 条记录匹配,并修改了 1 条记录:
OutputWriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
如果我们现在用我们新设置的名称检查该记录:
db.people.find({ name: "Sammy" }).pretty()
Output{ "_id" : ObjectId("5c08cc2e3d828385a2162d96"), "name" : "Sammy", "age" : 30, "hobbies" : [ "Coding", "Reading DigitalOcean Articles", "Creating Droplets" ], "hungry" : true }
name
键值已设置为其新值 Sammy
。
您还可以使用 $push
而不是 $set
将新爱好推送到数组中:
db.people.update({ name: "Sammy" }, {$push: { hobbies: "Typing furiously" }}) db.people.find({ name: "Sammy" }).pretty()
Output{ "_id" : ObjectId("5c08cc2e3d828385a2162d96"), "name" : "Sammy", "age" : 30, "hobbies" : [ "Coding", "Reading DigitalOcean Articles", "Creating Droplets", "Typing furiously" ], "hungry" : true }
现在让我们看看删除数据。
删除数据 (D)
使用 .remove()
功能删除数据。 您可以通过多种方式删除数据,但最安全的方法是使用唯一的 _id
找到要删除的记录,例如,您有多个 "Sammy"
条目,删除name: "Sammy"
将删除所有这些。 让我们试试这个:
db.people.remove({ _id: ObjectId("5c08cc2e3d828385a2162d96")})
OutputWriteResult({ "nRemoved" : 1 })
db.people.find().pretty()
Output{ "_id" : ObjectId("5c08c98f3d828385a2162d94"), "name" : "Andrew", "age" : 33, "hobbies" : [ "Coding", "Gaming", "Cooking" ], "hungry" : false } { "_id" : ObjectId("5c08cbea3d828385a2162d95"), "name" : "Riley", "age" : 3, "hobbies" : [ "Sleeping", "Barking", "Snuggles" ], "hungry" : true }
"Sammy"
条目已被安全删除,不会影响任何其他可能存在的 "Sammy"
记录(如果它们存在的话)。 尝试对此进行试验,看看您还能做什么。
结论
阅读本文后,您现在对如何在 MongoDB 数据库中创建、检索、更新和删除记录有了基本的了解。