问题标签 [doctrine-odm]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
695 浏览

mongodb - 哪个 DoctrineBundle 版本适用于 Symfony 2.0.15?

我花了几天时间试图在 Symfony 2.0.15 中整理我的部门。我找不到兼容的捆绑包列表,我一直在 github 上追逐提交,试图遵循一系列非 BC 更改以获得适合我的版本列表。最终我选择放弃并升级到 composer,结果发现一些 Doctrine 核心需要 Symfony 2.1,而其他一些 Doctrine 捆绑包需要 Symfony <2.1,最终我也放弃了。

安装了以下捆绑包的人可以让我知道他们从他们的 deps.lock 使用什么稳定版本吗?

使用这些组合,由于类不存在或重命名的方法,我得到一组恒定的错误,然后我在 github 存储库中查找并尝试修复解决此错误的提交/标记,只是得到另一组错误,因为其他类不存在或重命名的方法。由于 Doctrine 组织的命名空间更改,我无法回到几周前的稳定状态 - (@see Doctrine 的 Symfony Bundle repos 发生了什么?

或者,我不介意改用作曲家;这是我尝试过的composer.json,但不起作用

每当我尝试修复 composer.json 中的依赖项时,我似乎都会一次又一次地升级和降级相同的软件包,但总是收到错误“您的要求无法解决为一组可安装的软件包。”。如果有人可以使用 Symfony 2.0.15 和 Doctrine、MongoDB、DoctrineFixtures 和 DoctrineMigrations 捆绑包向我提供他们的 composer.json 设置,我将不胜感激。

0 投票
1 回答
2638 浏览

mongodb - 如何使用 JMSSerializerBundle 反序列化 Doctrine 对象?

我正在使用 Doctrine-ODM,并且正在尝试(反)序列化 Symfony 中的文档对象。

序列化似乎有效,但是当我尝试反序列化时,出现以下错误:

您必须为 My\Bundle\Repository\Item::$id 定义一个类型。

我尝试用这个调用反序列化:

我的文档有一些嵌入式文档,但它们在序列化字符串中似乎没问题。它缺少有关文档类型的信息。这是输出的简化示例:

现在我已经阅读了使用说明,并假设我的解决方案在第三方食谱的元数据中进行了解释,但我不知道该怎么做。

如何解决这个问题并将我的字符串正确反序列化为对象?

0 投票
2 回答
2680 浏览

php - Doctrine ODM / MongoDB 不重试查询?

我正在使用 Doctrine ODM 连接到 MongoDB。我有一个三节点副本集:两个完整副本和一个仲裁者。复制只是为了更高的可用性,我不寻求跨节点分布读取。我的应用程序MongoCursorException经常使用消息记录 s not master and slaveok=false。我没有看到任何证据表明 mongodb 日志中发生了故障转移事件并且主节点没有更改。更正:故障转移确实发生了,但常见的例外not master and slaveok=false经常出现,甚至在成功选举后6小时后出现6小时。

该怎么办?我看到我们的学说 mongodb版本包括(实验性?)重试功能,但我没有看到启用它的简单方法。

不确定它是否重要,但这是一个 Symfony2 (v2.0) 应用程序。

https://groups.google.com/d/topic/mongodb-user/6p710Rdycpg/discussion暗示我们需要重试(强调我的):

您的应用程序必须编写为重新连接/重试,因为可能会出现任何数量的瞬态(网络)错误,这与正常操作期间的滚动升级过程非常相似。

Mongo PHP 扩展文档似乎解释了这一点:

如果第一次尝试由于某些原因失败,驱动程序将自动重试“普通”查询(而不是命令)。这是为了在副本集故障转移期间导致更少的异常(尽管您可能仍然需要处理一些)并掩盖暂时的网络问题。

而且我认为doctrine-mongodb只是使用 PHP 扩展来实际与 mongod 交谈。所以我有点困惑是否应该担心重试配置。

我想我解决了部分问题:按照Kristina Chodorow 的建议,我从连接字符串中删除了仲裁器。我不再看到带有 message 的任何 s 。我可能一直在点击https://jira.mongodb.org/browse/PHP-392MongoCursorExceptionnot master and slaveok=false

但是,在故障转移期间,我仍然收到一些MongoCursorException消息couldn't determine master。例如,我刚刚进行了故障转移;根据 mongod 日志,几秒钟后选出了一个新的主节点,但 Web 应用程序甚至在 5 分钟后抛出了该异常。

0 投票
2 回答
862 浏览

doctrine - ZF1 + Doctrine 2 ODM:调用未定义的方法 AnnotationReader::setDefaultAnnotationNamespace

我正在尝试设置一个 zf1 + 学说 mongo odm 1.0.0BETA4-DEV 项目。我正在使用https://github.com/Bittarman/zf-d2-odm分支,但是当我将教义版本从 1.0.0BETA3 更新到 1.0.0BETA4-DEV 时,出现以下错误:

0 投票
3 回答
210 浏览

symfony - 有没有更聪明的方法来获取参考文档 ID,而无需查询它并对其进行补水?

我有一份文件,其中包含对其他一些文件的引用。像大多数人一样,我在 URL 的“id”字段中使用 MongoId 来查看这些文档。情况是我想从主文档中显示这些参考文档的链接。为了获取引用文档的 ID,我使用如下代码:

这里明显的烦恼是,学说将运行另一个查询来获取引用的文档,这样我就可以获得 ID。但是从技术上讲,该 ID 已经存在于参考字段的主文档中。难道不应该有一种更有效的方法来仅获取 ID 而无需查询和补充整个参考文档吗?每次我想这样做时都必须编写自定义查询吗?

当您生成包含指向其引用文档的链接的主要文档的大型列表时,该问题变得很重要。

0 投票
1 回答
1179 浏览

mongodb - Doctrine2 ODM QueryBuilder - 使用两个字段的总和更新字段

基本上尝试做同样的事情:

在 Doctrine2 的 ODM QueryBuilder 中 - 如果没有 MapReduce,这样的事情可能吗?我有一个分片集合,所以我需要使用 QueryBuilder 来按我的复合分片键进行搜索。

简化示例:

不幸的是,这将设置column3为字符串“column1 + column2”。有任何想法吗?

0 投票
1 回答
7919 浏览

mongodb - 如何在 Doctrine MongoDB ODM 中删除多个文档

如何删除学说 mongodb odm 中的多个文档?在 PHP 类中,我应该能够使用以下代码来做到这一点:

我怎样才能在学说mongo odm中做到这一点?

0 投票
1 回答
1026 浏览

mongodb - Doctrine2 ODM - 对象(或嵌入式文档)作为_id

我有一个运行增量地图的进程,减少到一个集合,我在其中查看不同时间段的指标 - 按 id(s) 和日期分组。所以我的输出集合基本上有一个复合 id 来处理分组。

我希望能够使用 ODM 在我的 Symfony2 应用程序中从该集合中获取结果 - 但在该_id字段中遇到问题。我以为我可以将其指定为@Idand @embedOne

但是,这不起作用。我还尝试使用 进行设置@Idstrategy=NONE并且可以使用 QueryBuilder 来获取行,但是在尝试对 Document 类进行水合时会出错。我尝试使用站点 ID 和日期 ( 67-134137916),它允许我使用 DocumentManager,但我失去了按日期范围查询的能力。

任何人都对如何在 Doctrine2 的 ODM 中将对象作为 id 处理有任何意见,这是否支持?

编辑: 删除复合主键标签 - 问题确实与使用对象作为主键有关。

0 投票
1 回答
806 浏览

rest - Doctrine Mongo ODM 合并外部修改数据

我正在编写一个 Symfony2 应用程序,它允许移动用户通过 REST 服务创建和更新“家庭”。我使用 MongoDB 作为存储层,使用 Doctrine MongoDB ODM 进行文档处理。

和方法工作正常GET /homes/{key}POST /homes当我尝试使用PUT /homes/{key}.

这是当前代码:

JMSSerializer 将传递给操作的 JSON 字符串成功反序列化为我的 Document 对象图,但是当我尝试合并和刷新时,出现错误:

我一直在尝试遵循此处的文档:http: //docs.doctrine-project.org/projects/doctrine-mongodb-odm/en/latest/reference/working-with-objects.html#merging-documents

在尝试合并之前,我需要对反序列化的 Home 做些什么吗?合并是错误的方法吗?

谢谢。

0 投票
1 回答
367 浏览

php - PHP Mongo: 注意: Mongo::__construct(): 解析服务器

我想知道为什么我会收到以下 php 通知:

第 38 行:

该通知有时会出现,而不是一直出现。我正在使用学说 mongo ODM。