doctrine odm,找到id不是对象id的文档

 痛苦逝去你的样子 发布于 2023-02-04 12:42

在我的mongodb我有一个集合,其中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"} [] []

有人有什么想法吗?

任何帮助提前感谢!

1 个回答
  • 如果你有自己的字符串_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

    2023-02-04 12:44 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有