我正在使用 Lithium PHP Framework - 与 MongoDB 数据库 - 为我的应用程序创建一些输入/编辑表单。
我在 MongoDB 中使用嵌入式文档的概念。我花了一些时间来调整初始保存,但我已经设置好了,所以它可以正常工作。
当我查看 MongoDB 时 - 我的对象如下所示:
{
_id: "5119951516c19",
level_name: "Testing",
questions: [
{
question_id: "5119951516cb5",
question_text: "Why is the sky blue"
},
{
question_id: "5119951516cc3",
question_text: "Why is grass green"
}
]
}
现在,如果我想做一个非常简单的编辑,例如:
$level = Levels::find($id);
$level["level_name"] = "Testing - UPDATE";
$level->save();
好消息是有问题的领域可以保存。但是,坏消息是它破坏了我的整个对象模型。MongoDB 中的新对象模型保存如下:
{
0: {
question_id: "5119951516cb5",
question_text: "Why is the sky blue"
},
1: {
question_id: "5119951516cc3",
question_text: "Why is grass green"
},
_id: "5119951516c19",
level_name: "Testing - UPDATE",
questions: [
{
question_id: "5119951516cb5",
question_text: "Why is the sky blue"
},
{
question_id: "5119951516cc3",
question_text: "Why is grass green"
}
]
}
基本文档保持不变 - 但不知何故,嵌入式文档在键“0”和“1”下被扔到顶层。
我搜索了高低,我无法弄清楚为什么会发生这种情况。由于我的保存功能非常简单,我假设这是 Lithium 中的一个错误。这很好——只要我有办法绕过它。
提前致谢。