无法在学说 mongo 查询中增加值

Posted

技术标签:

【中文标题】无法在学说 mongo 查询中增加值【英文标题】:Unable to increment value in a doctrine mongo query 【发布时间】:2013-02-24 23:02:54 【问题描述】:

看例子:http://docs.doctrine-project.org/projects/doctrine-mongodb-odm/en/latest/reference/query-builder-api.html

我无法进行简单的增量。那就是“票”的价值永远不会改变。我的文档 ID ($postID) 是正确的,我可以获取该文档。只是无法增加。为什么 Mongo 的文档这么乱??

$postID = "5121d0ad253b4af1d8000001";
 $dm = $this->get('doctrine.odm.mongodb.document_manager');
$post = $dm->createQueryBuilder('MainPostsBundle:Post')
->field('id')->equals($postID)
->field('votes')->inc(1)
->getQuery()->execute();

【问题讨论】:

尝试在你的$dm->createQueryBuilder('MainPostsBundle:Post')之后添加->update()juste 确实有效。但是,我真的希望能够在同一个声明中获得投票的价值。那是一条更新/选择语句 你的$post有什么? 我检查过 :) 这是一个布尔值。令人沮丧的是,文档让您假设您可以在一个语句中进行更新/选择。 我不确定所有数据库实现(mysql、PostGreSql...等)都支持 UPDATE RETURNING 值。但是在更新后进行第二次查询(选择)并不可耻。 【参考方案1】:

findAndModify 两者都做(见http://docs.doctrine-project.org/projects/doctrine-mongodb-odm/en/latest/reference/find-and-update.html)

【讨论】:

以上是关于无法在学说 mongo 查询中增加值的主要内容,如果未能解决你的问题,请参考以下文章

学说不能返回 json 查询的结果

如何在学说中编写联合查询?

如何将这个简单的 sql 查询转换为学说 querybuilder

如何限制joinLeft()结果的学说?

将自定义函数添加到学说查询生成器按子句分组

学说查询生成器中的嵌套选择查询