介绍
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 数据库中创建、检索、更新和删除记录。