嘿那里我试图用mongodb映射一些文件,一切都像这样完美
/**
* @MongoDB\Id
*/
protected $id;
/**
* @MongoDB\Field(type="string",name="text")
*/
protected $text;
但是,如果我有一个字段,可以参考另一个具有Object id的文档:
...
other:ObjectId("823789473938ab"),
...
但是我必须设置什么类型?
/**
* @MongoDB\Field(type="?",name="other")
*/
protected $other;
当我使用@MongoDB\Id
上方的注释时
它失败了
我也尝试使用像
这样的refferencene * @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的所有东西?
提前感谢任何帮助!
答案 0 :(得分:1)
编辑:
@MongoDB\ReferenceOne(targetDocument="Bundle1:Other", 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