0
{
    _id: ObjectId(...),
    discussion_id: ObjectId(...),
    slug: '34db',
    posted: ISODateTime(...),
    author: {
              id: ObjectId(...),
              name: 'Rick'
             },
    text: 'This is so bogus ... '
}

これは私がこれまで行ったことです:

class Discussion
{

   /**
    * @MongoDB\Id
    */
        protected $id;

    /**
     * @MongoDB\ObjectId
     */
    protected $discussion_id;


   /**
     * @MongoDB\String
     */
    protected $slug;


    /**
     * @MongoDB\String    <---------- IS THIS THE RIGHT DATA TYPE?
     */
    protected $author;

     /**
     * @MongoDB\String
     */
    protected $text;


    /**
     * @MongoDB\Date
     */
    protected $createdAt;

}

だから私のコードでは:

  $author_info = array(
            "userName" => $userName
            );

        $discussion = new Discussion();
        $discussion->setCreatedAt(new \DateTime());
        $discussion->setAuthor($author_info);
        $discussion->setText($listingInquiry);

私の質問は、私はそれを正しくやっていますか? 著者のタイプは別のものである必要があると感じています。提案してください。

ありがとう

4

1 に答える 1

1

作成者にが必要な場合ObjectId、それは埋め込みドキュメントになります (または を使用できます@MongoDB\Hash)。

埋め込みドキュメントの場合:

/**
 * @MongoDB\EmbeddedDocument
 */
class Author
{
   /**
    * @MongoDB\ObjectId
    */
   protected $id;

   /**
    * @MongoDB\String
    */
    protected $name;
}

メイン文書で

/**
 * @MongoDB\EmbedOne(targetDocument="[Namespace]\Author")
 */
 protected $author;

あなたのコードで:

$author = new Author();
$author->setId( new \MongoId( $userId ) );
$author->setName( "Mark" );

$discussion->setAuthor( $author);
于 2012-10-20T01:33:13.150 に答える