php – doctrine odm,查找id不是对象id的文档

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了php – doctrine odm,查找id不是对象id的文档脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
在我的 mongodb我有一个集合,其中id-field不是object-id
我不知道为什么它是这样的构建,我不能从头开始更改因为可能很多软件已经使用这种模式.

然而,这就是冰淇淋文件的样子:

{
   "_id": "52d0283ae4b01db941dd763b","insertDate": ISODate("2014-01-10T17:04:58.617Z"),"language": "en","PRofile": ObjectId("50e577602b5e05e74b38a6c8"),"related": ObjectId("516c0061975a299edc44b419"),"survey": ObjectId("516c0061975a299edc44b409"),"version": NumberInt(0) 
}

和mongoshell我会发现它像:

db.icecream.find({"_id":"52d0283ae4b01db941dd763b"})

而不是使用:

db.icecream.find({"_id":ObjectId("52d0283ae4b01db941dd763b")})

所以我尝试了很多查询来找到它,但是教条odm总是没有正确的查询,继承我的最新尝试:

return $this->;mongo->getManager()
    ->getReposITory('DocumentBundle:Icecream')
    ->findOneBy(array('_id' => (string)$answerId));

回归

doctrine.INFO: MongoDB query: {"find":true,"query":{"_id":{"$id":"52ced410e4b0fcc3da3a0c8b"}},"fields":[],"db":"myIcecreamDb","collection":"icecream"} [] []

有人有什么想法吗?

任何帮助提前感谢!

解决方法

如果你有自己的字符串_id(一个NOT MongoId对象),你可能想要使用Id的’strategy’属性.

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

/** @ODM\Document */
class MyPErsistentClass
{
    /** @ODM\Id(strategy="NONE") */
    private $id;

    public function setId($id) {
        $this->id = $id;
    }    
}

您可以在此处查看文档中的更多选项:
http://doctrine-mongodb-odm.readthedocs.org/en/latest/reference/basic-mapping.html#basic-mapping-identifiers

脚本宝典总结

以上是脚本宝典为你收集整理的php – doctrine odm,查找id不是对象id的文档全部内容,希望文章能够帮你解决php – doctrine odm,查找id不是对象id的文档所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。