ซอร์สโค้ดอาจช่วยได้มาก
มันเป็นจาวา แต่ฉันคิดว่ามันสามารถช่วยได้เช่นกัน
findOne()
,
DBObject findOne(DBObject o, DBObject fields, DBObject orderBy, ReadPreference readPref,
long maxTime, TimeUnit maxTimeUnit) {
QueryOpBuilder queryOpBuilder = new QueryOpBuilder().addQuery(o).addOrderBy(orderBy)
.addMaxTimeMS(MILLISECONDS.convert(maxTime, maxTimeUnit));
if (getDB().getMongo().isMongosConnection()) {
queryOpBuilder.addReadPreference(readPref);
}
Iterator<DBObject> i = find(queryOpBuilder.get(), fields, 0, -1, 0, getOptions(), readPref, getDecoder());
DBObject obj = (i.hasNext() ? i.next() : null);
if ( obj != null && ( fields != null && fields.keySet().size() > 0 ) ){
obj.markAsPartialObject();
}
return obj;
}
และนี่คือ find()
public DBCursor find( DBObject ref ){
return new DBCursor( this, ref, null, getReadPreference());
}
ในฐานะที่เราจะเห็นว่าfindOne()
สายfind()
ในตัวเองได้รับทั้งหมดDBOject
ในi
แล้วกลับคนแรก
find().limit(1)
ในการเขียนโปรแกรมปกติหรือไม่ (เช่นการดึงข้อมูลและการปิดเคอร์เซอร์) ที่findOne()
ทำเพื่อคุณโดยอัตโนมัติหรือไม่?