1

我正在为我的硕士论文开发一个测试应用程序,我正在尝试创建一个非常简单的博客来展示使用 MongoDB 的一些优点、缺点、特性等。

我创建了一个小的随机帖子生成器,它应该生成一个包含帖子的数组以及它应该包含的所有内容,用于 MongoDB 中的博客文章文档。

我的数组如下所示:

array
  'author' => 
    array
      'name' => string 'Shaine Coffey' (length=13)
      'email' => string 'Lars_Cherry@.com' (length=16)
  'post' => string 'Vivamus non lorem vitae odio sagittis semper. Nam tempor diam natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Aenean eget magna. Suspendisse tristique neque venenatis lacus. Etiam bibendum fermentum metus. Aenean sed pede nec ante blandit viverra. Donec tempus, lorem fringilla ornare placerat, orci lacus vestibulum lorem, sit amet ultricies sem magna nec quam. Curabitur vel lectus. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec dignissi'... (length=570)
  'date' => string 'Wed Mar 28 02:52:23 +0000 2007' (length=30)
  'rating' => int 0
  'comments' => 
    array
      0 => 
        array
          'name' => string 'Finn Hale' (length=9)
          'email' => string 'Magee_Huffman@.net' (length=18)
          'upVotes' => int 52
          'downVotes' => int 88
          'comment' => string 'augue malesuada malesuada. Integer id magna et ipsum cursus vestibulum. ligula. Aenean gravida nunc sed pede. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Proin vel arcu eu odio tristique pharetra. Quisque ac libero nec ligula consectetuer rhoncus. Nullam velit dui, semper et, lacinia vitae, sodales at, velit. Pellentesque ultricies dignissim lacus. Aliquam rutrum lorem ac risus. Morbi metus. Vivamus euismod urna. Nullam lobortis quam' (length=479)
      1 => 
        array
          'name' => string 'Axel Hall' (length=9)
          'email' => string 'Phillip_Simmons@.org' (length=20)
          'upVotes' => int 99
          'downVotes' => int 31
          'comment' => string 'mauris, aliquam eu, accumsan sed, facilisis vitae, orci. Phasellus dapibus ut, pellentesque eget, dictum placerat, augue. Sed molestie. Sed id risus quis diam luctus lobortis. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Mauris ut quam vel sapien imperdiet ornare. In faucibus. Morbi vehicula. Pellentesque tincidunt tempus risus. Donec egestas. Duis ac arcu. Nunc mauris. Morbi non sapien molestie orci tincidunt adipiscing. Mauris molestie pharetra nibh. Aliquam '... (length=554)
      2 => 
        array
          'name' => string 'Laith Rowland' (length=13)
          'email' => string 'Graham_Nicholson@.net' (length=21)
          'upVotes' => int 15
          'downVotes' => int 73
          'comment' => string 'iaculis enim, sit amet ornare lectus justo eu arcu. Morbi Suspendisse eleifend. Cras sed leo. Cras vehicula aliquet libero. Integer in magna. Phasellus dolor elit, pellentesque a, facilisis non, bibendum sed, est. Nunc laoreet lectus quis massa. Mauris vestibulum, neque sed dictum eleifend, nunc risus varius orci, in consequat enim diam vel arcu. Curabitur ut odio vel est tempor bibendum. Donec felis orci,' (length=409)
  'tags' => 
    array
      0 => string 'War' (length=3)
      1 => string 'Freedom' (length=7)

一切都是随机生成的,例如评论的数量可能会随着标签的数量而变化。

当我尝试在 MongoDB 中运行插入代码时,我收到错误警告:MongoCollection::insert() 期望参数 1 是数组或对象

我的插入代码如下所示:

for($i=0; $i<$n; $i++) {
    $post = BlogPosts();

    foreach ($postas $id => $item) {
        $collection->insert($item);
    }
}

我已经进入了 MongoDB 数据库和集合,就像这样(在我的 PHP 文件的顶部):

$mongo = new Mongo();
$db = $mongo->insert_test;
$collection = $db->testing;

我怀疑我的错误在于我如何创建我的数组,但我似乎无法找到错误在哪里。当我将其编码为 JSON 时,它已正确验证。

另一件事是,当我在集合“testing”中查看我的 MongoDB 数据库“insert_test”时,我得到了很多条目(文档),但它们被“拆分”了,例如,“标签”在一个文档中,“评论”在另一个中,依此类推。

对于我的错误的任何帮助或建议将不胜感激。


真诚的感谢
- Mestika

4

2 回答 2

1

它看起来非常像你想做的

$collection->insert($post);

代替:

foreach ($postas $id => $item) {
   $collection->insert($item);
}

你没有说你的 var_dump 显示什么变量。是 $post 还是 $item?

于 2012-04-17T10:35:28.200 回答
0

在调用 $collection->insert($item); 之前,请执行 var_dump($item)。这应该可以准确地告诉您要插入集合中的内容。您很可能会发现它不是数组或对象。

于 2012-04-17T09:01:13.627 回答