Mongo REPL, сохраняющий результат в var? - PullRequest
0 голосов
/ 19 декабря 2011

Любопытно - в следующем примере, почему REPL Монго не сохраняет хеш пользователя в переменной 'a' после первой печати?

Имеет ли это какое-то отношение к ленивой оценке запроса Монго?

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

1 Ответ

2 голосов
/ 20 декабря 2011

Вы можете использовать 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;
}
...