Mã nguồn có thể giúp rất nhiều.
Đó là java nhưng tôi đoán nó cũng có thể giúp.
các 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;
}
Và đây là find()
public DBCursor find( DBObject ref ){
return new DBCursor( this, ref, null, getReadPreference());
}
Như chúng ta có thể thấy rằng findOne()
các cuộc gọi find()
trong đó tự nhận, nhận được tất cả DBOject
trong i
và sau đó trả lại đầu tiên.
find().limit(1)
trong quá trình lập trình thông thường (như thực sự truy xuất dữ liệu và đóng con trỏ)findOne()
tự động thực hiện cho bạn không?