On this page本页内容
db.collection.findOne(query, projection)
This is a mongosh method. This is not the documentation for Node.js or other programming language specific driver methods.
In most cases, mongosh methods work the same way as the legacy mongo shell methods. However, some legacy methods are unavailable in mongosh.
For the legacy mongo shell documentation, refer to the documentation for the corresponding MongoDB Server release:
For MongoDB API drivers, refer to the language specific MongoDB driver documentation.
Returns one document that satisfies the specified query criteria on the collection or view. 返回一个满足集合或视图上指定查询条件的文档。If multiple documents satisfy the query, this method returns the first document according to the natural order which reflects the order of documents on the disk. 如果多个文档满足查询,此方法将根据反映磁盘上文档顺序的自然顺序返回第一个文档。In capped collections, natural order is the same as insertion order. 在封顶集合中,自然顺序与插入顺序相同。If no document satisfies the query, the method returns null.如果没有文档满足查询,则该方法返回null。
query | document | |
projection | document |
projection parameter, findOne() returns a document that only contains the projection fields. projection参数,findOne()将返回仅包含projection字段的文档。_id field is always included unless you explicitly exclude it._id字段,否则它始终包含在内。
|
Starting in MongoDB 4.2, if the client that issued the 从MongoDB 4.2开始,如果发出db.collection.findOne() disconnects before the operation completes, MongoDB marks the db.collection.findOne() for termination (i.e. killOp on the operation).db.collection.findOne()的客户端在操作完成之前断开连接,MongoDB会将db.collection.findOne()标记为终止(即操作上的killOp)。
Starting in MongoDB 4.4, as part of making 从MongoDB 4.4开始,作为使find() and findAndModify() projection consistent with aggregation's $project stage,find()和findAndModify()投影与聚合的$project阶段一致的一部分,
find() and findAndModify() projection can accept aggregation expressions and syntax.find()和findAndModify()投影可以接受聚合表达式和语法。The projection parameter determines which fields are returned in the matching documents. projection参数决定在匹配文档中返回哪些字段。The projection parameter takes a document of the following form:projection参数采用以下形式的文档:
{ field1: <value>, field2: <value> ... }
<field>: <1 or true> | true.true。
|
<field>: <0 or false> | |
"<field>.$": <1 or true> | $ array projection operator, you can specify the projection to return the first element that match the query condition on the array field; e.g. "arrayField.$" : 1. $数组投影运算符,可以指定投影以返回与数组字段上的查询条件匹配的第一个元素;例如"arrayField.$" : 1。true.true。 |
<field>: <array projection> | $elemMatch, $slice, specifies the array element(s) to include, thereby excluding those elements that do not meet the expressions. $elemMatch、$slice指定要包含的数组元素,从而排除那些不符合表达式的元素。 |
<field>: <$meta expression> | $meta operator expression, specifies the inclusion of available per-document metadata. $meta运算符表达式,指定包含可用的每个文档元数据。 |
<field>: <aggregation expression> |
|
For fields in an embedded documents, you can specify the field using either:对于嵌入文档中的字段,可以使用以下方法之一指定字段:
"field.nestedfield": <value>{ field: { nestedfield: <value> } } (Starting in MongoDB 4.4){ field: { nestedfield: <value> } }(从MongoDB 4.4开始)_idThe 默认情况下,_id field is included in the returned documents by default unless you explicitly specify _id: 0 in the projection to suppress the field._id字段包含在返回的文档中,除非您在投影中明确指定_id:0以抑制该字段。
A projection cannot contain both include and exclude specifications, with the exception of the _id field:projection不能同时包含包含和排除规范,_id字段除外:
_id field is the only field that you can explicitly exclude._id字段是唯一可以显式排除的字段。_id field is the only field that you can explicitly include; however, the _id field is included by default._id字段是唯一可以明确包含的字段;然而,默认情况下包含_id字段。For more information on projection, see also:有关投影的详细信息,另请参见:
The following operation returns a single document from the bios collection:以下操作从bios集合返回单个文档:
db.bios.findOne()
The following operation returns the first matching document from the bios collection where either the field 以下操作返回first in the embedded document name starts with the letter G or where the field birth is less than new Date('01/01/1945'):bios集合中的第一个匹配文档,其中嵌入文档name的first字段以字母G开头,或者字段birth小于new Date('01/01/1945'):
db.bios.findOne(
{
$or: [
{ 'name.first' : /^G/ },
{ birth: { $lt: new Date('01/01/1945') } }
]
}
)
The projection parameter specifies which fields to return. projection参数指定要返回的字段。The parameter contains either include or exclude specifications, not both, unless the exclude is for the 除非排除用于_id field._id字段,否则该参数包含包含或排除规范,而不是两者。
The following operation finds a document in the bios collection and returns only the 以下操作在name, contribs and _id fields:bios集合中查找文档,并仅返回name、contribs和_id字段:
db.bios.findOne(
{ },
{ name: 1, contribs: 1 }
)
The following operation returns a document in the bios collection where the 以下操作返回contribs field contains the element OOP and returns all fields except the _id field, the first field in the name embedded document, and the birth field:bios集合中的一个文档,其中contribs字段包含元素OOP,并返回除了_id字段、name嵌入文档中的first字段和birth字段之外的所有字段:
db.bios.findOne(
{ contribs: 'OOP' },
{ _id: 0, 'name.first': 0, birth: 0 }
)
findOne Result DocumentfindOne结果文档You cannot apply cursor methods to the result of 无法将游标方法应用于findOne() because a single document is returned. findOne()的结果,因为只返回一个文档。You have access to the document directly:您可以直接访问文档:
var myDocument = db.bios.findOne(); if (myDocument) { var myName = myDocument.name; print (tojson(myName)); }