Kaynak kodu çok yardımcı olabilir.
Java ama sanırım da yardımcı olabilir.
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;
}
Ve işte find()
public DBCursor find( DBObject ref ){
return new DBCursor( this, ref, null, getReadPreference());
}
Biz de görebileceğiniz gibi findOne()aramaları find()onun içinde kendini tüm alır DBOjectiçinde ive daha sonra ilk dönün.
find().limit(1)normal programlama sırasında yapmanız gereken ilave işlemleri (aslında verileri almak ve imleci kapatmak gibi)findOne()sizin için otomatik olarak yapan şeyleri hesaba katar mı?