Как сделать запрос Mongodb в функции Mongodb? - PullRequest
2 голосов
/ 10 июня 2011

Я пытаюсь написать сценарий монго из оболочки монго, но у меня небольшая проблема.Я позволю самому коду объясниться.

var shops = db.Shop.find({})

function printShopUrl(data) {
    var name, url;
    for (var i = 0; i < data.length(); i++) {
        name = data[i].name;
        url = db.Instance.findOne({name:name}).url;
        print(url);
    }
}

printShopUrl(shops)

Так что все, что я сейчас пытаюсь сделать, это просто напечатать URL-адрес, но когда я запускаю этот запрос, я получаю ошибку.

TypeError: db.Instance.findOne({name:name}) has no properties (shell):1

Есть идеи, что я делаю не так?

1 Ответ

1 голос
/ 12 июня 2011

Основная проблема: следующее может не вернуть значение db.Instance.findOne({name:name}).Поэтому, когда вы добавляете .url, вы пытаетесь получить значение из нулевого значения.

Попробуйте выполнить следующее:

var obj = db.Instance.findOne({name:name});
if(obj && obj.url) { print(obj.url); }

У вас та же потенциальная проблема с nameполе (name = data[i].name).

...