在我的
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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。