On this page
db.collection.findOne()
在本页面
Definition
db.collection.
findOne
(* query , projection *)- 返回一个满足集合或view上指定查询条件的文档。如果多个文档满足查询条件,则此方法将根据natural order返回第一个文档,该参数反映磁盘上文档的 Sequences。在capped collections中,自然 Sequences 与插入 Sequences 相同。如果没有文档满足查询条件,则该方法返回 null。
Parameter | Type | Description |
---|---|---|
query |
document | 可选的。使用query operators指定查询选择条件。 |
projection |
document | 可选的。指定要使用projection operators返回的字段。省略此参数可返回匹配文档中的所有字段。 |
projection
参数采用以下格式的文档:
{ field1: <boolean>, field2: <boolean> ... }
<boolean>
可以是以下包含或排除值之一:
包括
1
或true
。 findOne()方法始终包含_id字段,即使未在projection参数中明确指定该字段也是如此。0
或false
排除。
除了排除_id
字段外,projection 参数不能混合包含和排除规范。
返回: | 一个文档满足指定为该方法的第一个参数的条件。如果指定projection 参数,则findOne()返回仅包含projection 字段的文档。除非您明确排除_id 字段,否则始终将其包括在内。尽管与find()方法相似,但findOne()方法返回的是文档而不是游标。 |
---|
Examples
具有空查询规范
以下操作从bios collection返回单个文档:
db.bios.findOne()
具有查询规范
以下操作从bios collection返回第一个匹配的文档,其中嵌入式文档name
中的字段first
以字母G
或 开头,其中字段birth
小于new Date('01/01/1945')
:
db.bios.findOne(
{
$or: [
{ 'name.first' : /^G/ },
{ birth: { $lt: new Date('01/01/1945') } }
]
}
)
有投影
projection
参数指定要返回的字段。该参数包含包含或排除规范,但不能同时包含两者,除非排除是针对_id
字段。
指定要返回的字段
以下操作在bios collection中查找文档,并且仅返回name
,contribs
和_id
字段:
db.bios.findOne(
{ },
{ name: 1, contribs: 1 }
)
返回所有排除字段
以下操作在bios collection中返回一个文档,其中contribs
字段包含元素OOP
,并返回所有字段除了 _id
字段,name
嵌入式文档中的first
字段和birth
字段:
db.bios.findOne(
{ contribs: 'OOP' },
{ _id: 0, 'name.first': 0, birth: 0 }
)
findOne 结果文档
您不能将游标方法应用于findOne()的结果,因为返回了一个文档。您可以直接访问该文档:
var myDocument = db.bios.findOne();
if (myDocument) {
var myName = myDocument.name;
print (tojson(myName));
}