2011-12-19 2 views
0

호기심 - 다음 예제에서 몽고 REPL은 첫 번째 인쇄를 지나서 변수 'a'에 사용자 해시를 저장하지 않는 이유는 무엇입니까?몽고 REPL 결과를 var에 저장 하시겠습니까?

mongo의 lazy 쿼리 평가와 관련이 있습니까?

> var a = db.users.find(0) 
> a 
{ "_id" : ObjectId("4eed6dc299cd67e275000001"), "provider" : "facebook", "uid" : "343323487", "name" : "Brian Jordan", "email" : "[email protected]" } 
> a 
> 

답변

2

findOne을 사용할 수 있습니다.

> var a = db.testcoll.findOne() 
> a 
{ 
    "_id" : ObjectId("4e7930a3ff647405d6000003"), 
    "bf" : false, 
    "df" : ISODate("2011-09-21T00:32:35.629Z") 
} 

또는 당신은 소스보고 비슷한 일을 할 수

> db.testcoll.findOne 
function (query, fields) { 
    var cursor = this._mongo.find(this._fullName, this._massageObject(query) || {}, fields, -1, 0, 0, 0); 
    if (!cursor.hasNext()) { 
     return null; 
    } 
    var ret = cursor.next(); 
    if (cursor.hasNext()) { 
     throw "findOne has more than 1 result!"; 
    } 
    if (ret.$err) { 
     throw "error " + tojson(ret); 
    } 
    return ret; 
}