Shell 如何在mongodb函数中执行mongodb查询?
我正在尝试从mongo shell编写mongo脚本,但遇到了一个小问题。我会让代码自己解释Shell 如何在mongodb函数中执行mongodb查询?,shell,scripting,mongodb,serverside-javascript,Shell,Scripting,Mongodb,Serverside Javascript,我正在尝试从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})
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)
知道我做错了什么吗?主要问题:以下内容可能不会返回值
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
)也存在同样的潜在问题。看起来查询没有找到任何内容,在这种情况下,它将返回null。打印出中间结果db.Instance.findOne({name:name})-你看到了什么?谢谢E先生,这正是我遇到的问题。我试图回答我自己的问题,但我没有足够的理由。所以我将在这里发布我的解决方案。。我想我不能,它太长了,但是是的,我所做的只是把它包装在一个try-catch中,它就工作了。try-catch是多余的,只要做if(result)print(result.url)代码>
var obj = db.Instance.findOne({name:name});
if(obj && obj.url) { print(obj.url); }