好吧,我一直在试图解决这一段时间,但现在似乎是手忙脚乱。
我的主要目标是潜入第2个嵌套数组和完全删除“isCorrectAnswer”属性...的对象基本上是一个项目,其中有2个问题,各具有3个答案选项...
在应用程序的“回答”的时间表,我需要删除“isCorrectAnswer”,让任何用户可以通过查看数据传递......然后,一旦“应答”的时间表已经过去了,这将返回为作弊完整的对象,来表示答案是正确的那些用户。
从MongoDB的返回与它的问题和答案的“项目”对象的例子是:
{
"_id" : ObjectId("5397e4b75c4c9bf0509709ab"),
"name" : "Item Name",
"description" : "Item Description",
"questions" : [
{
"_id" : ObjectId("5397eb925d2664177b0fc5a5"),
"question" : "Item Question 1",
"answers" : [
{
"_id" : ObjectId("5397eb925d2664177b0fc5a6"),
"answer" : "Item Question 1 - Answer 1",
"isCorrectAnswer" : true
},
{
"_id" : ObjectId("5397eb925d2664177b0fc5a7"),
"answer" : "Item Question 1 - Answer 2",
"isCorrectAnswer" : false
},
{
"_id" : ObjectId("5397eb925d2664177b0fc5a8"),
"answer" : "Item Question 1 - Answer 3",
"isCorrectAnswer" : false
}
]
},
{
"_id" : ObjectId("5397eb925d2664177b0fc5a9"),
"question" : "Item Question 2",
"answers" : [
{
"_id" : ObjectId("5397eb925d2664177b0fc5aa"),
"answer" : "Item Question 2 - Answer 1",
"isCorrectAnswer" : false
},
{
"_id" : ObjectId("5397eb925d2664177b0fc5ab")
"answer" : "Item Question 2 - Answer 2",
"isCorrectAnswer" : true
},
{
"_id" : ObjectId("5397eb925d2664177b0fc5ac"),
"answer" : "Item Question 3 - Answer 3",
"isCorrectAnswer" : false
}
]
}
]
}
现在,根据我从MongoDB的过程中了解到...
我的第一个目标是做一个双开卷展平所有的东西到单个对象的结构。
因此,首先要在汇聚管道的步骤是:
{ "$unwind": "$questions" },
{ "$unwind": "$questions.answers" }
这工作得很好...
我的下一步是运行$项目中删除“isCorrectAnswer”属性:
{ "$project": {
"_id":1,
"name":1,
"description":1,
"questions":{
"_id":"$questions._id",
"question":"$questions.question",
"answers":{
"_id":"$questions.answers._id",
"answer":"$questions.answers.answer"
}
}
}}
这工作得很好,以及...
现在,我在哪里落下短再结合对象一起回来到原来的结构(没有“isCorrectAnswer”属性)...
我可以运行在管道旁边这$组命令,它的工作,但答案是不符合他们的问题进行分组回
{ "$group":{
"_id":{
"_id":"$_id",
"ordinal":"$ordinal",
"name":"$name",
"description":"$description",
"benefits":"$benefits",
"specialOffer":"$specialOffer",
"choicePoints":"$choicePoints",
"bonusPoints":"$bonusPoints",
"redemptionPoints":"$redemptionPoints",
"questions":"$questions"
}
}}
我仍抓住聚合框架多与$ group命令做......如果有我应该做不同的或如何运行第2 $组到“答案”结合在一起的任何步骤,我想知道。
我也认为我会需要运行一个最终$项目清理那些获得通过$组添加了“_id”属性
谢谢您的帮助。
德里克