स्रोत कोड बहुत मदद कर सकता है।
यह जावा है, लेकिन मुझे लगता है कि यह भी मदद कर सकता है।
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()
स्वचालित रूप से आपके लिए करता है?