【发布时间】:2021-07-27 08:26:50
【问题描述】:
基本上,我有一个嵌套的对象数组。我想从这些对象中提取信息,并将所有结果作为数组返回。
这是我的数据:
[
{
"_id": "608642db80a36336946620aa",
"title": "titleHere",
"types": {
"flashcardReversed": [
{
"normal": { // the data inside of "normal" should become its own object in the returned array
"_id": "608d5b290e635ece6828141X",
"front": "2front",
"back": "2back"
},
"reversed": { // the data inside of "reversed" should become its own object in the returned array
"_id": "608t5b290e635ece6828141Y",
"front": "2frontReversed",
"back": "2backReversed"
}
},
{
"normal": {
"_id": "608a5b31a3f9806de253726X",
"front": "2front2",
"back": "2back2"
},
"reversed": {
"_id": "608a5b31a3f9806de253726Y",
"front": "2frontReversed2",
"back": "2backReversed2"
}
}
]
}
}
]
这是想要的结果:
[
{
"flashcardReversed": [
{
"_id": "608d5b290e635ece6828141X",
"front": "2front",
"back": "2back"
},
{
"_id": "608t5b290e635ece6828141Y",
"front": "2frontReversed",
"back": "2backReversed"
},
{
"_id": "608t5b290e635ece6828141Y",
"front": "2frontReversed",
"back": "2backReversed"
},
{
"_id": "608a5b31a3f9806de253726Y",
"front": "2frontReversed2",
"back": "2backReversed2"
}
]
}
]
我目前的尝试:https://mongoplayground.net/p/k3Fjd59KMKg
我曾尝试通过各种方法合并$card 和$card2 文档,然后使用$replaceRoot 来创建所需的结果 - 但经过长时间的尝试,我没有成功。
关于我的用例的一些说明 -
我将在$facet 中使用这个管道
flashcardReversed 内部会有很多对象,都是从同一个 Mongoose Schema 创建的
文档最多应包含 ~2000 张卡片。我需要在反应网站中使用的结果。我应该担心这个搜索的效率吗? (如果这本身就是一个问题,我很乐意将其移动)。
如果我的 Mongoose Schema 有帮助,请告诉我,我可以添加它们。
感谢所有帮助,
- Riley Swinson
【问题讨论】:
-
原版中是否总是“正常”和“反转”键?还是可以有更多?
-
@CodyG 可以有很多文档,都具有相同的结构。我会澄清我的帖子。谢谢!
标签: javascript mongodb mongoose mongodb-query aggregation-framework