MongoDB shell:打印结果



如果我在 Robo3T 中只执行以下简短脚本的第一部分,我会将结果打印到屏幕上。 如果我用第二部分执行它,我只得到标准答案"脚本执行成功,但没有结果显示"。

如何打印中间结果,例如第二部分的预期结果?

我确切地说,特许权和任务都是类似的JSON对象。 我在这个简单的问题上花了几个小时。请帮忙。

var mission = db.mission.find({"googleCalendarEventId":"QiVJdbL"});
while (mission.hasNext()) {
var record = mission.next();   
print(record.googleCalendarEventId + "," + record.concessionIdSet[0])
};
// 2nd part //
var concession = db.cursor.findOne({"_id": ObjectId(mission.concessionIdSet[0])});
while (concession.hasNext()) {
var record = concession.next();   
print(record)
};

再次感谢@stennie,对于其他遇到相同问题的人,这里有一个对我有用的代码和我犯的 2 个错误: 1/查找(-->光标(和查找一个(--> 1 个元素(之间的区别 2/循环中的动作必须嵌套在循环中 --> 我使用了一个函数并且它有效:

const missions = db.mission.find({
$and:[{"concessionToInvoice": {$exists: false}},
{"concessionIdSet":{$size:1}}]
}); 
missions.forEach((mission) => {
const concession = getConcession(mission);
print(mission.googleCalendarEventId+"- invoice to :"+concession.name);
mission.concessionToInvoice = getConcessionToInvoice(concession); //another function
db.mission.save(mission);
});
function getConcession(mission){
const concession = db.concession.findOne({"_id": ObjectId(mission.concessionIdSet[0])});
return concession;
}

最新更新