簡體   English   中英

主義mongo odm,注釋和查詢mongo ObjectId?

[英]Doctrine mongo odm, annotate and query mongo ObjectId?

嘿,我正在嘗試在mongodb中映射一些文檔,並且一切都像這樣完美

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

/**
 * @MongoDB\Field(type="string",name="text")
 */
protected $text;

但是,如果我有一個字段引用了另一個具有對象ID的文檔,該怎么辦:

...
other:ObjectId("823789473938ab"),
...

但是我必須設置什么類型呢?

/**
 * @MongoDB\Field(type="?",name="other")
 */
protected $other;

當我使用@MongoDB\\Id上方的注釋時,它將失敗

我也試着像

 * @MongoDB\ReferenceOne(targetDocument="Bundle1:Other")

離開它無參數時,我在其他地方做某事時總是返回0

          $others=$dm
                 ->createQueryBuilder('Bundle1:Thing')
                 ->field('other')
                 ->equals('ObjectId("516c0061975a299edc44b419")')
                 ->getQuery()
                 ->execute()->count();

查詢看起來像:

doctrine.INFO: MongoDB query: {"find":true,"query":{"other":"ObjectId(\"516c0061975a299edc44b419\")"},"fields":[],"db":"maself","collection":"thing"}

所以當然有一個零計數,所以問題的一部分還在於如何查詢所有事物,其中其他是唯一的mongo id?

任何幫助,謝謝!

編輯:

@MongoDB\ReferenceOne(targetDocument="Bundle1:Other", simple=true)

選項“ simple”為true,應該適合您! Doctrine的默認引用格式是DBRef()

您可以通過以下方式查詢它:

$qb->field('other')->references($OtherObject)

要么

$qb->field('other')->equals(new \MongoId('01243efe..'))

ObjectId()是PHP中mongo的本機字段類型,其\\ MongoId

如果要使用@MongoDB \\ Id,則必須導入:

use Doctrine\ODM\MongoDB\Mapping\Annotations as MongoDB;

編輯注釋時請注意緩存!

提示:如果使用getId(),則此方法將返回字符串,而不是\\ MongoId

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM