【发布时间】:2017-06-27 13:29:30
【问题描述】:
这是我的架构示例,其中包含一些数据:
client {
menus: [{
sections: [{
items: [{
slug: 'some-thing'
}]
}]
}]
}
我正在尝试像这样选择它:
Schema.findOne({ client._id: id, 'menus.sections.items.slug': 'some-thing' }).select('menus.sections.items.$').exec(function(error, docs){
console.log(docs.menus[0].sections[0].items[0].slug);
});
当然,“docs.menus[0].sections[0].items[0].slug”只有在每个数组中只有一个东西的情况下才有效。如果每个数组中有多个项目,而无需遍历所有内容来找到它,我该如何完成这项工作?
如果您需要更多详细信息,请告诉我。
【问题讨论】:
-
您的问题实际上是多个
menus.sections.items.slug可以匹配“某事”并且您想返回所有这些,而不仅仅是一个。还是你的意思是别的? -
不,slug 是唯一的,应该只返回一件事,但它返回父数组中的所有内容......所以使用 [0] 不起作用。
-
-
我的问题写得不好。像 Schema.findOne({ client._id: id, 'menus._id': id }).select('menus.$') ... 会返回一个包含一项的数组,即。 docs.menus[0] ...当您比单个数组(数组中的数组)更深时,有没有办法做到这一点?
-
基本上,我只希望它返回相关的菜单、部分、项目...而不是所有菜单、部分等。
标签: node.js mongodb mongoose mongodb-query aggregation-framework