获取mongoDB模型树结构中的所有父文档
Get all parent documents in a mongoDB model tree structure
我的集合使用模型树结构。作为引用,我使用父字段。我需要从当前对象及其所有父对象获取属性。路径中的最后一个元素有一个字段'target'。所以我从
开始var result = parent = Articles.findOne({target: this.params._id});
do {
parent = Articles.findOne({_id: parent.parent}).parent;
for (var attrname in parent) { result[attrname] = parent[attrname]; }
}
while (parent.parent === null);
那对我来说似乎效率很低。难道不可能用一行来得到一个包含所有元素的对象吗?然后我可以处理这个对象
<<p> 示例文档/strong>{
"_id" : "LD6h5ZcDuJjexfKfx",
"title" : "title",
"publisher" : "public",
"author" : "author"
}
{
"_id" : "KSiyh8zHRq8RZQ2E6",
"edition" : "edition",
"year" : "2020",
"parent" : "LD6h5ZcDuJjexfKfx"
}
{
"_id" : "5yCk4y25wrLBLZhyY",
"pageNumbers" : "1-10",
"target" : "9sjhzPhyTuQ5Kbh6v",
"parent" : "KSiyh8zHRq8RZQ2E6"
}
所以从"target" : "9sjhzPhyTuQ5Kbh6v"
开始,我想得到两个父文档(在这个例子中)。
至少我需要数据集
"title" : "title",
"publisher" : "public",
"author" : "author",
"edition" : "edition",
"year" : "2020",
"pageNumbers" : "1-10"
如果你想在单个查询中做到这一点,那么你需要遵循Mongodb中的祖先数组模式。否则,你需要递归地遍历叶节点上方的分支。对于层次结构的低深度,如你的,这不是一个大的惩罚。
如果有一个祖先数组,你的文档树看起来会像:
{
"_id" : "LD6h5ZcDuJjexfKfx",
"title" : "title",
"publisher" : "public",
"author" : "author",
}
{
"_id" : "KSiyh8zHRq8RZQ2E6",
"edition" : "edition",
"year" : "2020",
"ancestors" : ["LD6h5ZcDuJjexfKfx"],
"parent" : "LD6h5ZcDuJjexfKfx"
}
{
"_id" : "5yCk4y25wrLBLZhyY",
"pageNumbers" : "1-10",
"target" : "9sjhzPhyTuQ5Kbh6v",
"ancestors" : ["LD6h5ZcDuJjexfKfx","KSiyh8zHRq8RZQ2E6"],
"parent" : "KSiyh8zHRq8RZQ2E6"
}
获取文档及其父文档:
Articles.find({ $or: [ { target: target },
_id: { $in: Articles.findOne({ target: target }).ancestors }]});
相关文章:
- MongoDB (php) - 以数组而不是多个属性的形式返回文档属性
- 如何从多个不同的html页面获得mongodb文档的用户输入
- 如何在mongodb(mongose)中覆盖子文档的数组属性
- 如何获取文档数组中元素的计数-MongoDB
- 如何在MongoDB中检索子文档引用
- 如何在mongoDB中过滤子文档
- MongoDB/Mongoose-使用geoNear的聚合;子文档
- 将多级 mongodb 文档转换为 Backbone.js 模型/集合
- 收集订阅者的流星事件,用于在 mongodb 中新插入文档
- MongoDB 删除重复的子文档
- MongoDB findAndModify:>>>查找和更新文档数组中的对象
- 是否可以引用猫鼬(MongoDB)上的子文档
- 更新数组中的嵌入文档 - Mongodb + Node Driver
- 向文档 mongodb 添加新字段
- 如果文档不存在,如何创建文档MongoDB Javascript
- 导入BSON文档MongoDB时出错
- 更新数组从文档(MongoDB)在Javascript不工作
- Mapreduce与内部文档mongodb排序
- 省略子文档MongoDB中的某些结果
- 查询子文档MongoDB Node.JS