MongoDB - FindOne() 方法
findOne()方法查找并返回一个符合给定选择标准的文档。如果多个文档满足给定的查询表达式,则此方法将根据反映磁盘上文档顺序的自然顺序返回第一个文档。如果没有文档符合选择条件,则此方法将返回 null。它需要两个参数,第一个是查询条件,另一个是可选的。
- 如果要查找嵌入文档的字段,请使用以下语法:
“field.nestedfieldname”:
or
{field: {nestedfieldname:
- 此方法返回的文档始终包含 _id 字段。如果您不想要 _id 字段,则在投影中设置 _id:0。
句法:
db.Collection_Name.findOne(
query:
projection:
)
参数:
- 第一个参数是集合的查询条件。
- 其他是可选的。
可选参数:
投影:投影参数确定哪些字段返回到匹配文档。投影参数采用包含字段:值对的文档:
{field1:
这里,
-
: <1 or true>: 这意味着我们 指定 包含一个字段。 -
: <0 or false>: 这意味着我们 指定 排除一个字段。 - “
.$”:<1 or true>: 这里,通过使用$数组投影运算符 我们指定投影以返回与数组字段上给定查询表达式匹配的第一个元素。 -
: 在这里,通过使用数组投影运算符,我们通过排除那些与给定表达式不匹配的项来指定要包含的数组项。: -
: <$meta 表达式>: 在这里,通过使用 $meta表达式运算符,我们指定包含可用的每个文档元数据。 -
: 表示我们指定投影字段的值。:
返回:
它返回一个具有集合中指定查询条件的匹配文档。如果你指定了一个投影参数,那么 is 方法会返回一个只包含投影字段的文档。
例子:
在以下示例中,我们正在使用:
Database: gfg
Collections: student
Document: Three documents contains name and the language in which they are interested.
- 使用空查询规范,它返回集合中的第一个文档:
db.student.findOne()
- 返回包含指定字段的第一个文档:
db.student.findOne({language:"python"})
- 返回包含语言字段的第一个文档:
db.student.findOne({language:"c++"})
- 使用投影查找文档:
db.student.findOne({name: "Avinash"}, {_id: 0, language:1})
在这里,我们找到一个名为“Avinash”的文档,并且只想显示 Avinash 知道的语言。因此,在投影文档中,我们将语言字段的值设置为 1,将 _id 的值设置为 0。