2

我正在尝试从 mongo shell 编写一个 mongo 脚本,但我遇到了一个小问题。我会让代码自己解释。

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

知道我做错了什么吗?

4

1 回答 1

1

主要问题:以下可能不返回值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

于 2011-06-12T05:39:16.130 回答