提交 60b78dd3 编写于 作者: W wizardforcel

2019-10-15 17:11:07

上级 21ce3a14
......@@ -58,7 +58,7 @@ db.collection_name.find({"field_name":{$gt:criteria_value}}).pretty()
db.students.find({"age":{$gt:32}}).pretty()
```
我有两个符合条件的文,如下面的屏幕截图所示:
我有两个符合条件的文,如下面的屏幕截图所示:
![MongoDB Query Document GreaterThan Criteria](img/41a6a4b2a583e6152d27031bee10cbef.jpg)
......
......@@ -2,11 +2,11 @@
> 原文: [https://beginnersbook.com/2017/09/mongodb-update-document/](https://beginnersbook.com/2017/09/mongodb-update-document/)
在 MongoDB 中,我们有两种方法来更新集合中的文档。 1)update()方法 2)save()方法。虽然这两种方法都更新了现有文档,但它们正在不同的场景中使用。当我们需要更新现有文档的值时使用 update()方法,而 save()方法用于将现有文档替换为已在其中传递的文档。
在 MongoDB 中,我们有两种方法来更新集合中的文档。1)`update()`方法,2)`save()`方法。虽然这两种方法都更新了现有文档,但它们正在不同的场景中使用。当我们需要更新现有文档的值时使用`update()`方法,而`save()`方法用于将现有文档替换为已在其中传递的文档。
要更新 MongoDB 中的文档,我们在命令中提供条件,并更新与该条件匹配的文档。要了解标准在 MongoDB 命令中的工作方式,请参阅上一个教程: [MongoDB 查询文档](https://beginnersbook.com/2017/09/mongodb-query-document-using-find-method/)
## 使用 update()方法更新文档
## 使用`update()`方法更新文档
**语法:**
......@@ -16,7 +16,7 @@ db.collection_name.update(criteria, update_data)
**示例:**
例如:假设我在数据库“beginnersbookdb”中有一个名为“got”的集合。 “得到”里面的文件是:
例如:假设我在数据库`beginnersbookdb`中有一个名为`got`的集合。`got`里面的文档是:
```js
> db.got.find().pretty()
......@@ -72,20 +72,19 @@ db.got.update({"name":"Jon Snow"},
db.collection_name.save( {_id:ObjectId(), new_document} )
```
让我们采用我们在上面看到的相同的例子。现在我们要将“Kit Harington”的名称更新为“Jon Snow”。要使用 save()方法,您应该知道该文档的唯一 _id 字段。
让我们采用我们在上面看到的相同的例子。现在我们要将`Kit Harington`的名称更新为`Jon Snow`。要使用`save()`方法,您应该知道该文档的唯一`_id`字段。
> 一个非常重要的**注意事项**是当你在使用 save()
> 方法时不提供 **_id** 字段时,它调用 insert()方法并插入传递的文件作为新文档进入集合
> 一个非常重要的**注意事项**是当你在使用`save()`方法时不提供`_id`字段时,它调用`insert()`方法并插入传递的文档作为新文档进入集合
要获取文档的 _id,可以键入以下命令:
要获取文档的`_id`,可以键入以下命令:
```js
db.got.find().pretty()
```
这里有一个集合名称。这种查找唯一 _id 的方法仅在您拥有少量文档时才有用,否则在大量文档中滚动和搜索该 _id 是很繁琐的。
这里有一个集合名称。这种查找唯一`_id`的方法仅在您拥有少量文档时才有用,否则在大量文档中滚动和搜索该`_id`是很繁琐的。
如果您有大量文档,那么要获取特定文档的 _id,请使用 find()方法中的条件。例如:要使用 save()方法获取要更新的文档的 _id,请键入以下命令:
如果您有大量文档,那么要获取特定文档的`_id`,请使用`find()`方法中的条件。例如:要使用`save()`方法获取要更新的文档的`_id`,请键入以下命令:
```js
> db.got.find({"name": "Kit Harington"}).pretty()
......@@ -96,7 +95,7 @@ db.got.find().pretty()
}
```
现在我们知道该文档的唯一 _id 字段。让我们使用 save()方法编写命令。
现在我们知道该文档的唯一`_id`字段。让我们使用`save()`方法编写命令。
```js
> db.got.save({"_id" : ObjectId("59bd2e73ce524b733f14dd65"), "name":
......
......@@ -2,9 +2,9 @@
> 原文: [https://beginnersbook.com/2017/09/mongodb-delete-document/](https://beginnersbook.com/2017/09/mongodb-delete-document/)
在本教程中,我们将学习如何从集合中删除文档。 remove()方法用于从 MongoDB 中的集合中删除文档。
在本教程中,我们将学习如何从集合中删除文档。`remove()`方法用于从 MongoDB 中的集合中删除文档。
**remove()方法的语法:**
**`remove()`方法的语法:**
```js
db.collection_name.remove(delete_criteria)
......@@ -12,9 +12,9 @@ db.collection_name.remove(delete_criteria)
> 要了解如何在 MongoDB 命令中指定条件,请参阅本教程: [MongoDB 查询文档](https://beginnersbook.com/2017/09/mongodb-query-document-using-find-method/)。
## 使用 remove()方法删除文档
## 使用`remove()`方法删除文档
假设我的 MongoDB 数据库中有一个名为`beginnersbookdb`的集合`students``students`集合中的文是:
假设我的 MongoDB 数据库中有一个名为`beginnersbookdb`的集合`students``students`集合中的文是:
```js
> db.students.find().pretty()
......@@ -32,7 +32,7 @@ db.collection_name.remove(delete_criteria)
}
```
现在我想删除这个学生 ID 等于 3333 的学生。要做到这一点,我会使用 remove()方法编写一个命令,如下所示:
现在我想删除这个学生 ID 等于 3333 的学生。要做到这一点,我会使用`remove()`方法编写一个命令,如下所示:
```js
db.students.remove({"StudentId": 3333})
......@@ -50,7 +50,7 @@ WriteResult({ "nRemoved" : 1 })
db.students.find().pretty()
```
它将列出学生收集的所有文件
它将列出学生集合的所有文档
以下是上述所有步骤的屏幕截图:
......@@ -58,13 +58,13 @@ db.students.find().pretty()
## 如何只删除一个符合条件的文档?
当集合中存在多个符合条件的文档时,如果运行 remove 命令,则将删除所有这些文档。但是,有一种方法可以将删除限制为仅一个文档,这样即使有更多文档符合删除条件,也只会删除一个文档。
当集合中存在多个符合条件的文档时,如果运行`remove`命令,则将删除所有这些文档。但是,有一种方法可以将删除限制为仅一个文档,这样即使有更多文档符合删除条件,也只会删除一个文档。
```js
db.collection_name.remove(delete_criteria, justOne)
```
这里 justOne 是一个布尔参数,只取 1 和 0,如果你给 1,那么它会将文件删除限制为只有 1 个文件。这是一个可选参数,如上所述,我们使用 remove()方法而不使用此参数。
这里`justOne`是一个布尔参数,只取 1 和 0,如果你给 1,那么它会将文档删除限制为只有 1 个文档。这是一个可选参数,如上所述,我们使用`remove()`方法而不使用此参数。
例如,我在集合中有以下记录。
......@@ -90,7 +90,7 @@ db.collection_name.remove(delete_criteria, justOne)
}
```
假设我想删除年龄等于 32 的文档。此集合中有两个文档符合此条件。但是,为了将删除限制为 1,我们将 justOne 参数设置为 true
假设我想删除年龄等于 32 的文档。此集合中有两个文档符合此条件。但是,为了将删除限制为 1,我们将`justOne`参数设置为`true`
```js
db.walkingdead.remove({"age": 32}, 1)
......@@ -104,12 +104,12 @@ WriteResult({ "nRemoved" : 1 })
![Deleting only one document MongoDB](img/0ebf2b7da351882f068ed5a133b5aa1f.jpg)
## 删除所有文
## 删除所有文
如果要从集合中删除所有文档但不想删除集合本身,则可以使用 remove()方法,如下所示:
如果要从集合中删除所有文档但不想删除集合本身,则可以使用`remove()`方法,如下所示:
```js
db.collection_name.remove({})
```
> 如果您想删除该集合以及所有文档,请参阅本指南: [MongoDB Drop Collection](https://beginnersbook.com/2017/09/mongodb-drop-collection/)
\ No newline at end of file
> 如果您想删除该集合以及所有文档,请参阅本指南:[MongoDB 删除集合](https://beginnersbook.com/2017/09/mongodb-drop-collection/)
\ No newline at end of file
......@@ -2,9 +2,9 @@
> 原文: [https://beginnersbook.com/2017/09/mongodb-projection/](https://beginnersbook.com/2017/09/mongodb-projection/)
在之前的教程中,我们学习了[如何在查询文档](https://beginnersbook.com/2017/09/mongodb-query-document-using-find-method/)时使用条件来从集合中获取所选文档。在本教程中,我们将学习 MongoDB 的另一个有趣话题,即 **MongoDB Projection** 。当我们想要获取文档的选定字段而不是所有字段时使用。
在之前的教程中,我们学习了[如何在查询文档](https://beginnersbook.com/2017/09/mongodb-query-document-using-find-method/)时使用条件来从集合中获取所选文档。在本教程中,我们将学习 MongoDB 的另一个有趣话题,即 **MongoDB 投影**。当我们想要获取文档的选定字段而不是所有字段时使用。
例如,我们有一个集合,其中存储了包含以下字段的文档:student_name,student_id,student_age 但我们只想查看所有学生的 student_id,那么在这种情况下我们可以使用 projection 来获取 student_id
例如,我们有一个集合,其中存储了包含以下字段的文档:`student_name``student_id``student_age`但我们只想查看所有学生的`student_id`,那么在这种情况下我们可以使用投影来获取`student_id`
**语法:**
......@@ -16,7 +16,7 @@ db.collection_name.find({},{field_key:1 or 0})
## MongoDB 投影示例
让我们举一个例子来理解 MongoDB 中的 Projection。我们有一个名为`studentdata`的集合,其中包含以下文档。
让我们举一个例子来理解 MongoDB 中的投影。我们有一个名为`studentdata`的集合,其中包含以下文档。
```js
> db.studentdata.find().pretty()
......@@ -51,7 +51,7 @@ db.collection_name.find({},{field_key:1 or 0})
![MongoDB Projection Example](img/1f703d63b52c3f71e86de1fc965f5e92.jpg)
> 值 1 表示显示字段,0 表示不显示该字段。当我们在 Projection 中将字段设置为 1 时,除了 _id 之外,其他字段会自动设置为 0,因此为了避免 _id,我们需要在投影中将其专门设置为 0。反之亦然,当我们将少数字段设置为 0,其他字段自动设置为 1 时(参见下面的示例)
> 值 1 表示显示字段,0 表示不显示该字段。当我们在投影中将字段设置为 1 时,除了`_id`之外,其他字段会自动设置为 0,因此为了避免`_id`,我们需要在投影中将其专门设置为 0。反之亦然,当我们将少数字段设置为 0,其他字段自动设置为 1 时(参见下面的示例)
另一种做同样事情的方法:
......@@ -64,7 +64,7 @@ db.collection_name.find({},{field_key:1 or 0})
**重要提示:**
有些人在查询中使用 Projection 时可能会收到此错误:
有些人在查询中使用投影时可能会收到此错误:
```js
Error: error: {
......@@ -75,10 +75,10 @@ Error: error: {
}
```
当您将某些字段设置为 0 而其他字段设置为 1 时会发生这种情况,换句话说,您将混合包含和排除组合在一起,唯一的例外是 _id 字段。例如:以下 Query 将产生此错误:
当您将某些字段设置为 0 而其他字段设置为 1 时会发生这种情况,换句话说,您将混合包含和排除组合在一起,唯一的例外是`_id`字段。例如:以下查询将产生此错误:
```js
db.studentdata.find({}, {"_id": 0, "student_name": 0, "student_age": 1})
```
这是因为我们将 student_name 设置为 0,将其他字段 student_age 设置为 1.我们不能混用这些。您可以将不想显示的字段设置为 0,或将字段设置为 1 以显示。
\ No newline at end of file
这是因为我们将`student_name`设置为 0,将其他字段`student_age`设置为 1。我们不能混用这些。您可以将不想显示的字段设置为 0,或将字段设置为 1 以显示。
\ No newline at end of file
# MongoDB - limit()和 skip()方法
# MongoDB - `limit()`和`skip()`方法
> 原文: [https://beginnersbook.com/2017/09/mongodb-limit-and-skip-method/](https://beginnersbook.com/2017/09/mongodb-limit-and-skip-method/)
在本教程中,我们将学习如何在 MongoDB 查询中使用 limit()和 skip()方法。
在本教程中,我们将学习如何在 MongoDB 查询中使用`limit()``skip()`方法。
## MongoDB 中的 limit()方法
## MongoDB 中的`limit()`方法
此方法限制响应特定查询而返回的文档数。
语法:
```js
db.collection_name.find().limit(number_of_documents)
```
让我们举一个例子来了解如何使用这种方法。可以说,我有一个集合`studentdata`,其中包含以下文
让我们举一个例子来了解如何使用这种方法。可以说,我有一个集合`studentdata`,其中包含以下文
```js
> db.studentdata.find().pretty()
......@@ -37,7 +38,7 @@ db.collection_name.find().limit(number_of_documents)
}
```
让我们说我想找出所有学生的名单,ID 为>我会用一个标准写一个这样的查询:
让我们说我想找出所有`ID > 2002`的学生的名单,我会用一个判断写一个这样的查询:
> 要了解在查询文档时如何指定条件,请阅读: [MongoDB 查询文档](https://beginnersbook.com/2017/09/mongodb-query-document-using-find-method/)
......@@ -47,9 +48,9 @@ db.studentdata.find({student_id : {$gt:2002}}).pretty()
![MongoDB limit method in Query](img/32fef9988e1185247d3d2880e58c4d48.jpg)
**使用 limit()方法限制结果中的文件:**
**使用`limit()`方法限制结果中的文档:**
让我说我不希望所有符合条件的文件。我只想选择一些文件,然后我可以使用 limit()方法来限制文件的数量。例如,如果我只想输出一个文档,那么我会这样做:
让我说我不希望所有符合条件的文档。我只想选择一些文档,然后我可以使用`limit()`方法来限制文档的数量。例如,如果我只想输出一个文档,那么我会这样做:
```js
> db.studentdata.find({student_id : {$gt:2002}}).limit(1).pretty()
......@@ -61,13 +62,13 @@ db.studentdata.find({student_id : {$gt:2002}}).pretty()
}
```
## MongoDB Skip()方法
## MongoDB `skip()`方法
skip()方法用于在 Query 结果中跳过给定数量的文档。
`skip()`方法用于在查询结果中跳过给定数量的文档。
要理解 skip()方法的使用,让我们采用上面我们看到的相同示例。在上面的例子中,我们可以看到,通过使用 limit(1),我们设法只获得一个文档,这是第一个与给定条件匹配的文档。如果您不希望第一个文档符合您的条件,该怎么办?例如,我们有两个文件,其 student_id 值大于 2002 但是当我们使用 limit(1)将结果限制为 1 时,我们得到了第一个文档,为了得到符合此条件的第二个文档,我们可以使用 skip(1) )这里将跳过第一份文件
要理解`skip()`方法的使用,让我们采用上面我们看到的相同示例。在上面的例子中,我们可以看到,通过使用`limit(1)`,我们设法只获得一个文档,这是第一个与给定条件匹配的文档。如果您不希望第一个文档符合您的条件,该怎么办?例如,我们有两个文档,其`student_id`值大于 2002 但是当我们使用`limit(1)`将结果限制为 1 时,我们得到了第一个文档,为了得到符合此条件的第二个文档,我们可以使用`skip(1)`,这里将跳过第一份文档
**不使用 skip():**
**不使用`skip()`:**
```js
> db.studentdata.find({student_id : {$gt:2002}}).limit(1).pretty()
......@@ -79,7 +80,7 @@ skip()方法用于在 Query 结果中跳过给定数量的文档。
}
```
**使用跳过:**
**使用`skip`:**
```js
> db.studentdata.find({student_id : {$gt:2002}}).limit(1).skip(1).pretty()
......
# MongoDB sort()方法
# MongoDB `sort()`方法
> 原文: [https://beginnersbook.com/2017/09/mongodb-sort-method/](https://beginnersbook.com/2017/09/mongodb-sort-method/)
在本教程中,我们将学习如何使用 sort()方法对文档进行排序。
在本教程中,我们将学习如何使用`sort()`方法对文档进行排序。
## 使用 sort()方法对文档进行排序
## 使用`sort()`方法对文档进行排序
使用 sort()方法,您可以根据文档的特定字段按升序或降序对文档进行排序。
使用`sort()`方法,您可以根据文档的特定字段按升序或降序对文档进行排序。
**sort()方法的语法:**
**`sort()`方法的语法:**
```js
db.collecttion_name.find().sort({field_key:1 or -1})
```
1 表示升序,-1 表示降序。默认值为 1\.
**
例如:**集合`studentdata`包含以下文档:
1 表示升序,-1 表示降序。默认值为 1
**例如**集合`studentdata`包含以下文档:
```js
> db.studentdata.find().pretty()
......@@ -51,7 +51,7 @@ db.collecttion_name.find().sort({field_key:1 or -1})
{ "student_id" : 2002 }
```
要以**升序**显示所有学生的 student_id 字段:
要以**升序**显示所有学生的`student_id`字段:
```js
> db.studentdata.find({}, {"student_id": 1, _id:0}).sort({"student_id": 1})
......@@ -60,7 +60,7 @@ db.collecttion_name.find().sort({field_key:1 or -1})
{ "student_id" : 2004 }
```
**默认值:**默认为升序,所以如果我在 sort()方法中没有提供任何值,那么它将按升序对记录进行排序,如下所示:
**默认值**:默认为升序,所以如果我在`sort()`方法中没有提供任何值,那么它将按升序对记录进行排序,如下所示:
```js
> db.studentdata.find({}, {"student_id": 1, _id:0}).sort({})
......@@ -69,6 +69,6 @@ db.collecttion_name.find().sort({field_key:1 or -1})
{ "student_id" : 2004 }
```
**您还可以根据您不想显示的字段对文档进行排序:**例如,您可以根据 student_id 对文档进行排序,并显示 student_age 和 student_name 字段。
**您还可以根据您不想显示的字段对文档进行排序**:例如,您可以根据`student_id`对文档进行排序,并显示`student_age``student_name`字段。
![MongoDB Sort Documents](img/3f3a87402f177880235c5d54006d05ef.jpg)
\ No newline at end of file
......@@ -14,10 +14,9 @@ db.collection_name.createIndex({field_name: 1 or -1})
值 1 表示升序,-1 表示降序。
例如,我有一个集合`studentdata`。此集合中的文档包含以下字段:
student_name,student_id 和 student_age
例如,我有一个集合`studentdata`。此集合中的文档包含以下字段:`student_name``student_id``student_age`
假设我想按升序在 student_name 字段上创建索引:
假设我想按升序在`student_name`字段上创建索引:
```js
db.studentdata.createIndex({student_name: 1})
......@@ -36,11 +35,11 @@ db.studentdata.createIndex({student_name: 1})
![MongoDB create index](img/e72447552a10b2a820090df108f423b4.jpg)
我们在 student_name 上创建了索引,这意味着当有人根据 student_name 搜索文档时,搜索速度会更快,因为索引将用于此搜索。因此,在字段中创建将在集合中频繁搜索的索引非常重要。
我们在`student_name`上创建了索引,这意味着当有人根据`student_name`搜索文档时,搜索速度会更快,因为索引将用于此搜索。因此,在字段中创建将在集合中频繁搜索的索引非常重要。
## MongoDB - 查找集合中的索引
我们可以使用 getIndexes()方法来查找在集合上创建的所有索引。此方法的语法是:
我们可以使用`getIndexes()`方法来查找在集合上创建的所有索引。此方法的语法是:
```js
db.collection_name.getIndexes()
......@@ -70,7 +69,7 @@ db.collection_name.getIndexes()
]
```
输出显示我们在此集合中有两个索引。在 _id 上创建的默认索引以及我们在 student_name 字段上创建的索引。
输出显示我们在此集合中有两个索引。在`_id`上创建的默认索引以及我们在`student_name`字段上创建的索引。
## MongoDB - 删除集合中的索引
......@@ -78,7 +77,7 @@ db.collection_name.getIndexes()
**删除特定索引:**
为此,使用了 dropIndex()方法。
为此,使用了`dropIndex()`方法。
```js
db.collection_name.dropIndex({index_name: 1})
......@@ -91,13 +90,16 @@ db.studentdata.dropIndex({student_name: 1})
```
![MongoDB Drop Index](img/47fafb49e9afce059bd06e823ad2d118.jpg)
nIndexesWas:显示执行此命令之前有多少索引
ok:1:表示命令执行成功。
`nIndexesWas`:显示执行此命令之前有多少索引
`ok: 1`:表示命令执行成功。
**删除所有索引:**
要删除集合的所有索引,我们使用 dropIndexes()方法。
dropIndexs()方法的语法:
要删除集合的所有索引,我们使用`dropIndexes()`方法。
`dropIndexs()`方法的语法:
```js
db.collection_name.dropIndexes()
......@@ -111,4 +113,4 @@ db.studentdata.dropIndexes()
![MongoDb Dropping all indexes](img/8ab0ef03956d2779bf59fe3a97a9e34e.jpg)
消息“为集合删除的非 _id 索引”表示默认索引 _id 仍将保留,不能删除。这意味着使用此方法我们只能删除我们创建的索引,我们不能删除在 _id 字段上创建的默认索引。
\ No newline at end of file
消息“为集合删除的非`_id`索引”表示默认索引`_id`仍将保留,不能删除。这意味着使用此方法我们只能删除我们创建的索引,我们不能删除在`_id`字段上创建的默认索引。
\ No newline at end of file
......@@ -4,7 +4,7 @@
MongoDB 是一个面向文档的开源数据库,它以文档(键和值对)的形式存储数据。正如我们上一篇教程([NoSQL 介绍](https://beginnersbook.com/2017/09/introduction-to-nosql/))中所讨论的那样,基于文档的数据库是 NoSQL 数据库的一种类型。
**什么是文?**
**什么是文?**
如果您来自关系数据库背景,那么您可以将它们视为 RDBMS 中的行。关系数据库和 MongoDB 之间的映射将在下一个教程中介绍,所以如果你想知道 MongoDB 中的行,表,列的等价物,你一定要检查它:[将关系数据库映射到 MongoDB](https://beginnersbook.com/2017/09/mapping-relational-databases-to-mongodb/)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册