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にエンコードすると、正しく検証されます。

もう 1 つのことは、コレクション「testing」内の MongoDB データベース「insert_test」を調べると、多くのエントリ (ドキュメント) を取得しますが、それらは「分割」されているため、たとえば「タグ」は 1 つのドキュメント内にあるということです。 、「コメント」は別のものなどです。

私のエラーが何であるかについての助けや提案は大歓迎です。

ありがとう
誠実
- メスティカ

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 に答える