MongoDB findOne 示例
MongoDB的findOne()方法返回只满足输入条件的一个文档。如果输入条件匹配多个文档,该方法会按照自然排序只返回一个文档,这个自然排序反映了文档在数据库中的存储顺序。
MongoDB的findOne方法
MongoDB的findOne()语法是:db.collection.findOne(, )。criteria – 指定输入的选择条件。projection – 指定返回文档中要显示的字段列表。有关MongoDB findOne的几个重要点:
-
- 投影参数接受布尔值1或true,0或false。如果未指定投影字段,将检索所有字段。
-
- MongoDB的findOne()函数始终包含_id字段,即使在投影参数中没有明确指定,除非该字段被排除。
- MongoDB的findOne()函数只返回一个文档而不是指针。
MongoDB的findOne方法-空的查询规范
这个操作从指定的集合中返回一个文档。例如,db.car.findOne() 输出:
{
"_id" : 2,
"name" : "Polo", "color" : "White",
"cno" : "H411", "speed" : 45, "mfdcountry" : "Japan"
}
从汽车集合中仅检索到一条记录。请注意,”Polo” 是首先插入到数据库中的。
MongoDB的findOne方法-查询规范
该MongoDB的findOne操作从指定的集合中返回第一个与输入的选择条件匹配的文档。例如:
>db.car.findOne(
... {
... $or:[
... {name:"Zen"},
... {speed: {$gt:60}} ... ]
... }
... )
{
"_id" : ObjectId("546cb92393f464ed49d620db"),
"name" : "Zen",
"color" : "JetRed",
"cno" : "H671",
"speed" : 67,
"mfdcountry" : "Rome"
}
这个操作在汽车收藏中搜索名为“Zen”的汽车或速度大于60,并检索满足所输入条件的第一个文档。
在MongoDB的findOne()方法中,投影功能
投影参数也适用于MongoDB的findOne方法。让我们看一些使用投影的情况。
使用MongoDB的findOne函数可以指定要返回的字段。
此操作将仅显示查询中指定的字段。例如:
>db.car.findOne(
... { },
... {name:1,color:1}
... )
{ "_id" : 2, "name" : "Polo", "color" : "White" }
展示了来自汽车集合的第一个文档,其中包含id、名字和颜色字段。
MongoDB的findOne – 返回除了被排除的字段之外的所有字段。
本操作根据选择条件排除指定字段,以检索第一个文档。例如;
>db.car.findOne(
... { name:"Volkswagen" },
... {_id:0, mfdcountry:0,cno:0 }
... )
{ "name" : "Volkswagen", "color" : "JetBlue", "speed" : 62 }
在Volkswagen车型中,排除id、mfdcountry和cno字段,并检索车名。
MongoDB的findOne查询结果文档
由于该方法仅返回单个文档,光标方法在此操作中无法使用。为了打印文档中的各个字段值,我们可以使用以下代码。
>var car = db.car.findOne();
> if (car) {
... var carName = car.name;
... print (tojson(carName));
... }
"Polo"
这个只检索汽车的名字“Polo”。
MongoDB的findOne Java示例
以下是展示了可以使用MongoDB findOne()的不同选项的Java程序。MongoDBFindOne.java
package com.Olivia.mongodb;
import com.mongodb.BasicDBObject;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.DBObject;
import com.mongodb.MongoClient;
import java.net.UnknownHostException;
public class MongoDBFindOne {
// method retrieves the first document without any criteria
public static void emptyFindOne() throws UnknownHostException {
// Get a new connection to the db assuming that it is running
MongoClient mongoClient = new MongoClient("localhost");
// use test as a datbase,use your database here
DB db = mongoClient.getDB("test");
// fetch the collection object ,car is used here,use your own
DBCollection coll = db.getCollection("car");
// invoking findOne() method
DBObject doc = coll.findOne();
// prints the resultant document
System.out.println(doc);
}
// method that retrieves the document based on the selection criteria
public static void querySpecification() throws UnknownHostException {
// getting a connection everytime is not needed (could be done once
// globally).
MongoClient mongoClient = new MongoClient("localhost");
DB db = mongoClient.getDB("test");
DBCollection coll = db.getCollection("car");
// query to filter the document based on name and speed values by
// creating new object
DBObject query = new BasicDBObject("name", "Zen").append("speed",
new BasicDBObject("$gt", 30));
// resultant document fetched by satisfying the criteria
DBObject d1 = coll.findOne(query);
// prints the document on console
System.out.println(d1);
}
public static void projectionFields() throws UnknownHostException {
MongoClient mongoClient = new MongoClient("localhost");
DB db = mongoClient.getDB("test");
DBCollection coll = db.getCollection("car");
// creates new db object
BasicDBObject b1 = new BasicDBObject();
// criteria to display only name and color fields in the resultant
// document
BasicDBObject fields = new BasicDBObject("name", 1).append("color", 1);
// method that retrieves the documents by accepting fields and object
// criteria
DBObject d1 = coll.findOne(b1, fields);
System.out.println(d1);
}
public static void excludeByfields() throws UnknownHostException {
MongoClient m1 = new MongoClient("localhost");
DB db = m1.getDB("test");
DBCollection col = db.getCollection("car");
// filter criteria for car name volkswagen
DBObject query = new BasicDBObject("name", "Volkswagen");
// excluding the fields mfdcountry,cno and id fields
BasicDBObject fields = new BasicDBObject("mfdcountry", 0).append("cno",
0).append("_id", 0);
DBObject d1 = col.findOne(query, fields);
System.out.println(d1);
}
public static void printDoc() throws UnknownHostException {
MongoClient m1 = new MongoClient("localhost");
DB db = m1.getDB("test");
DBCollection col = db.getCollection("car");
DBObject d1 = col.findOne();
// prints only the name of the car
System.out.println((d1.get("name")));
}
public static void main(String[] args) throws UnknownHostException {
// invoking all the methods from main
emptyFindOne();
querySpecification();
projectionFields();
excludeByfields();
printDoc();
}
}
以上程序的输出是:
{ "_id" : 2.0 , "name" : "Polo" , "color" : "White" , "cno" : "H411" , "speed" : 45.0 , "mfdcountry" : "Japan"}
{ "_id" : { "$oid" : "546cb92393f464ed49d620db"} , "name" : "Zen" , "color" : "JetRed" , "cno" : "H671" , "speed" : 67 , "mfdcountry" : "Rome"}
{ "_id" : 2.0 , "name" : "Polo" , "color" : "White"}
{ "name" : "Volkswagen" , "color" : "JetBlue" , "speed" : 62}
Polo
这就是关于MongoDB的findOne()方法的全部内容,我们将在后续的文章中介绍更多关于MongoDB的选项。参考资料:官方文档。