如何在 MongoDB 中创建、检索、更新和删除记录

介绍

MongoDB 是一个免费和开源的 NoSQL 文档数据库,通常用于现代 Web 应用程序. 在这个简短的教程中,您将探索如何在 MongoDB 中使用数据。

前提条件

要完成本教程,你需要安装MongoDB,你可以通过以下方法来完成(https://andsky.com/tech/tutorials/how-to-install-mongodb-on-ubuntu-18-04)。

创建一个数据库

在运行 MongoDB 的服务器上,键入mongo以打开连接到数据库:

1mongo

一旦您看到>符号,您就可以创建您的第一个数据库并开始添加记录。

让我们创建一个个人数据库来存储一些关于用户的数据。

我们的第一个命令use userdb创建了一个名为userdb的新数据库,您可以在use <databasename>格式中放置您想要的任何名称。

1use userdb

您可以通过db命令来验证您目前正在使用的数据库,在我们的情况下返回userdb:

1db
1[secondary_label Output]
2userdb

现在创建了数据库,您可以创建一些 JSON 结构文档来存储数据在数据库中。

执行以下命令将一些数据插入您的数据库:

1db.people.insert({ name: "Andrew", age: 33, hobbies: ["Coding", "Gaming", "Cooking"], hungry: false})

您将收到WriteResult通知,通知您您的插入成功:

1[secondary_label Output]
2WriteResult({ "nInserted" : 1 })

您可以使用许多数据类型,包括字符串、数字、数组和布尔值。

收集数据

一旦你有数据在你的收集,你可以开始搜索和过滤这些数据使用 .find(<parameters>)

要验证您的数据已被添加到)`语法,在 MongoDB 控制台中执行此命令:

1db.people.find()

此命令显示当前与文档相关的所有数据。

1[secondary_label Output]
2{ "_id" : ObjectId("5c08c98f3d828385a2162d94"), "name" : "Andrew", "age" : 33, "hobbies" : [ "Coding", "Gaming", "Cooking" ], "hungry" : false }

如果您想将此转换为漂亮的 JSON 格式,请使用 .pretty() 之后的 .find() :

1db.people.find().pretty()
 1[secondary_label Output]
 2{
 3        "_id" : ObjectId("5c08c98f3d828385a2162d94"),
 4        "name" : "Andrew",
 5        "age" : 33,
 6        "hobbies" : [
 7                "Coding",
 8                "Gaming",
 9                "Cooking"
10        ],
11        "hungry" : false
12}

当您添加新记录时,该 Mongo 会自动创建一个 `_id' 密钥,以便您在以后进行参考。

尝试添加更多数据,然后我们将努力修改和搜索数据。

1db.people.insert({ name: "Riley", age: 3, hobbies: ["Sleeping", "Barking", "Snuggles"], hungry: true})
2db.people.insert({ name: "You", age: 30, hobbies: ["Coding", "Reading DigitalOcean Articles", "Creating Droplets"], hungry: true})

例如,如果我只想找到那些饥饿的人的记录:

1db.people.find({ hungry: true }).pretty()
 1[secondary_label Output]
 2{
 3        "_id" : ObjectId("5c08cbea3d828385a2162d95"),
 4        "name" : "Riley",
 5        "age" : 3,
 6        "hobbies" : [
 7                "Sleeping",
 8                "Barking",
 9                "Snuggles"
10        ],
11        "hungry" : true
12}
13{
14        "_id" : ObjectId("5c08cc2e3d828385a2162d96"),
15        "name" : "You",
16        "age" : 30,
17        "hobbies" : [
18                "Coding",
19                "Reading DigitalOcean Articles",
20                "Creating Droplets"
21        ],
22        "hungry" : true
23}

或者具体的爱好:

1db.people.find({ hobbies: "Coding" }).pretty()
 1[secondary_label Output]
 2{
 3        "_id" : ObjectId("5c08c98f3d828385a2162d94"),
 4        "name" : "Andrew",
 5        "age" : 33,
 6        "hobbies" : [
 7                "Coding",
 8                "Gaming",
 9                "Cooking"
10        ],
11        "hungry" : false
12}
13{
14        "_id" : ObjectId("5c08cc2e3d828385a2162d96"),
15        "name" : "You",
16        "age" : 30,
17        "hobbies" : [
18                "Coding",
19                "Reading DigitalOcean Articles",
20                "Creating Droplets"
21        ],
22        "hungry" : true
23}

更新数据

要修改您的数据,请使用 .update() 函数,但首先让我们看看我们的数据,看看我们想要改变什么:

1db.people.find().pretty()
 1[secondary_label Output]
 2{
 3        "_id" : ObjectId("5c08c98f3d828385a2162d94"),
 4        "name" : "Andrew",
 5        "age" : 33,
 6        "hobbies" : [
 7                "Coding",
 8                "Gaming",
 9                "Cooking"
10        ],
11        "hungry" : false
12}
13{
14        "_id" : ObjectId("5c08cbea3d828385a2162d95"),
15        "name" : "Riley",
16        "age" : 3,
17        "hobbies" : [
18                "Sleeping",
19                "Barking",
20                "Snuggles"
21        ],
22        "hungry" : true
23}
24{
25        "_id" : ObjectId("5c08cc2e3d828385a2162d96"),
26        "name" : "You",
27        "age" : 30,
28        "hobbies" : [
29                "Coding",
30                "Reading DigitalOcean Articles",
31                "Creating Droplets"
32        ],
33        "hungry" : true
34}

更改第三个记录的名称如下:

1db.people.update({ name: "You" }, {$set: { name: "Sammy" }})

声明的第一部分指定了您要更新的内容,第二部分是您要设置的新值。

1[secondary_label Output]
2WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

如果我们现在用我们新设置的名称检查该记录:

1db.people.find({ name: "Sammy" }).pretty()
 1[secondary_label Output]
 2{
 3        "_id" : ObjectId("5c08cc2e3d828385a2162d96"),
 4        "name" : "Sammy",
 5        "age" : 30,
 6        "hobbies" : [
 7                "Coding",
 8                "Reading DigitalOcean Articles",
 9                "Creating Droplets"
10        ],
11        "hungry" : true
12}

「名稱」鍵值已設定為其新的「Sammy」值。

您也可以通过使用$push而不是$set来推动新的爱好:

1db.people.update({ name: "Sammy" }, {$push: { hobbies: "Typing furiously" }})
2db.people.find({ name: "Sammy" }).pretty()
 1[secondary_label Output]
 2{
 3        "_id" : ObjectId("5c08cc2e3d828385a2162d96"),
 4        "name" : "Sammy",
 5        "age" : 30,
 6        "hobbies" : [
 7                "Coding",
 8                "Reading DigitalOcean Articles",
 9                "Creating Droplets",
10                "Typing furiously"
11        ],
12        "hungry" : true
13}

现在让我们来看看删除数据。

删除数据(D)

您可以通过几种方式删除数据,但最安全的方式是通过使用独特的 _id 来找到要删除的记录,以便,例如,您有多个 "Sammy" 条目,通过 名称: "Sammy" 删除将删除所有条目。

1db.people.remove({ _id: ObjectId("5c08cc2e3d828385a2162d96")})
1[secondary_label Output]
2WriteResult({ "nRemoved" : 1 })
1db.people.find().pretty()
 1[secondary_label Output]
 2{
 3        "_id" : ObjectId("5c08c98f3d828385a2162d94"),
 4        "name" : "Andrew",
 5        "age" : 33,
 6        "hobbies" : [
 7                "Coding",
 8                "Gaming",
 9                "Cooking"
10        ],
11        "hungry" : false
12}
13{
14        "_id" : ObjectId("5c08cbea3d828385a2162d95"),
15        "name" : "Riley",
16        "age" : 3,
17        "hobbies" : [
18                "Sleeping",
19                "Barking",
20                "Snuggles"
21        ],
22        "hungry" : true
23}

Sammy条目已被安全删除,而不会影响任何其他可能的Sammy条目,如果它们存在。

结论

阅读本文后,您现在可以了解如何在 MongoDB 数据库中创建、检索、更新和删除记录。

Published At
Categories with 技术
Tagged with
comments powered by Disqus