MongoDB中的findOne()方法的用法

mongoDB中findOne()的用法介绍

定义db.collection.findOne(queryprojection)

返回一个文档满足指定的查询条件。如果多个文档满足查询,该方法返回第一个文档根据自然秩序反映了磁盘上文件的顺序。在限制集合,自然秩序是一样的插入顺序。如果没有文档满足查询,方法返回null。

参数

类型

描述

查询

文档

可选,使用查询操作符指定查询选择标准。

投影

文档

可选,指定的字段返回使用投影操作符。省略该参数返回匹配文档中所有字段。

使用投影文档的一个参数形式如下:

{field1:<boolean>,field2:<boolean>...}

<布尔>类型可以用以下包括或排除值之一:

.包括1或者正确的。这个findOne()方法永远包含了_id域甚至并没有显式地指定字段的投影参数。

.0或者错误是排除的。

当然投影参数也不能混合包括和排除规范,除了扣除_id字段外。

返回情况:

         满足条件的一个文档指定为这个方法的第一个参数。如果你指定一个投影参数,那么findOne()返回一个文档,只包含了你投影的字段,_id字段总是包括的,除非你明确的排除它。

         尽管find()方法和这个方法很类似,但是findOne()方法返回是一个文档为而不是游标。

举例:

         以下操作返回一个文档从user集合:

         db.user.findOne()

查询规范:

         下面的一个操作返回了第一个匹配的文档是从user集合的字段嵌入文档中的第一个名称开头字母G或者参数不等于这个new的日期;

db.user.findOne({$or:[{‘name.first’:/^G/},

{

birth:{$lt:new Date(‘01/01/1945’)}}

]

}

)

使用投影:

         投影参数指定的字段返回。参数包含包括或者排除规范,不是两个,除非排除_id字段。下面的这个操作在user中找到这个文档集合和只返回名称、contribs和id字段:

db.user.findOne(

{ },

{name:1,contribs:1}

)

返回所有且不包括的字段

   下面的操作返回文档在USER集合contrib字段包含的元素OOP和返回所有字段,除了_id字段。第一个字段嵌入文档中,和birth字段;

db.user.findOne(
   { contribs:'OOP' },
   { _id:0,'name.first':0, birth:0 }
)

得到结果是文档:

        无法使用游标方法得到findOne()的结果,因为是返回的一个文档,可以直接访问这个文档。此时游标是关闭的。

var myDocument = db.user.findOne();
if (myDocument) {
   var myName = myDocument.name;
   print (tojson(myName));
}

下面以runoob为例,附find()和findOne()方法的区别:

MongoDB中的findOne()方法的用法_第1张图片

加入条件查询:

MongoDB中的findOne()方法的用法_第2张图片

你可能感兴趣的:(数据库)