【发布时间】:2011-11-10 04:11:09
【问题描述】:
我有一个递归嵌套模式,就像 cmets 在博客上工作一样。将单独嵌套的文档拉出可能有几层深的最佳方法是什么。
我知道您获取了根文档,然后深入到您想要的文档,但是在递归情况下,想要的文档可能是未知数量的深度,我应该如何检索它。循环并执行 if 以查看其是否正确...?
【问题讨论】:
标签: json mongodb node.js mongoose
我有一个递归嵌套模式,就像 cmets 在博客上工作一样。将单独嵌套的文档拉出可能有几层深的最佳方法是什么。
我知道您获取了根文档,然后深入到您想要的文档,但是在递归情况下,想要的文档可能是未知数量的深度,我应该如何检索它。循环并执行 if 以查看其是否正确...?
【问题讨论】:
标签: json mongodb node.js mongoose
看起来没有猫鼬方法可以做到这一点,所以我使用这样的递归查找函数来查找嵌套的文件夹:
var findFolder = function(searchFolder ,folder_id, cb){
var folder = searchFolder.folders.id(folder_id);
if(folder == undefined){
_.each(searchFolder.folders, function(subFolder){
findFolder(subFolder, folder_id, cb);
}.bind(this))
}else{
cb(folder);//when found callback passing the doc
};
};
附言这使用下划线库
【讨论】:
快速回答是:你不能加载子文档,因为 mongodb 不支持它。在 mongodb 中,您只能加载根文档,然后在客户端(从任何深度级别)从中提取子文档。
【讨论】: