2

我正在使用 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 中的一个错误。这很好——只要我有办法绕过它。

提前致谢。

4

0 回答 0