- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我使用以下代码使用 robomongo 客户端将主要类别 ID 引用插入到次要类别文档
var parentDoc = db.getCollection('category').findOne({"slug":"Primary"});
db.category.insert(
{
"name" : "Secondary",
"slug" : "secondary",
"taxonomy" : true,
"ancestors" : [
{
"_id" : parentDoc._id,
"name" : parentDoc.name
}
]
})
我试过下面的 PHP 风格
$query = '
{
"slug" : "fashion"
}';
$primaryCategory = Category::findFirst(array(json_decode($query,true))); //phalcon code
$primary = array();
$primary['_id'] = $primaryCategory->_id;
$primary['name'] = $primaryCategory->name;
$document = array(
"name" => "Secondary2",
"slug" => "secondary",
"taxonomy" => true,
"ancestors" => array($primary)
);
$category = $app->mongo->selectCollection('category');//phalcon style of fetching collection handle
$category->insert($document);
});
并尝试了 Phalcon 风格
$query = '
{
"slug" : "fashion"
}';
$primaryCategory = Category::findFirst(array(json_decode($query,true)));
$cat = new Category(); // new secondary category
$cat->name = 'Secondary';
$cat->slug = 'secondary';
$cat->taxonomy = true;
$cat->ancestors = array();
$primary = array();
$primary['_id'] = $primaryCategory->_id;
$primary['name'] = $primaryCategory->name;
array_push ( $cat->ancestors, $primary );
$cat->save();
在上面的代码中,服务器和 mongo 之间有 2 次往返
是否可以在 1 次往返中执行它们,我可以在插入 secondaryDoc 时引用 parentDocId
最佳答案
您可以通过使用 Bulk API
来利用您的插入操作 可从 MongoDB 2.6 或更高版本获得。当前的 PHP 驱动程序应该支持这些方法,特别是您需要 MongoWriteBatch
类,它扩展了 MongoInsertBatch
用于插入操作的类。本质上,该操作可以按如下方式实现:
<?php
$mc = new MongoClient("localhost");
$collection = $mc->selectCollection("test", "category");
$batch = new MongoInsertBatch($collection);
$counter = 0;
$query = array("slug" => "Primary");
foreach ($collection->find($query) as $doc ) {
$primary = array();
$primary['_id'] = $doc->_id;
$primary['name'] = $doc->name;
$doc = array(
"name" => "Secondary2",
"slug" => "secondary",
"taxonomy" => true,
"ancestors" => array($primary)
);
$batch->add($doc);
$counter++;
if ( $counter % 1000 === 0 ) {
$ret = $batch->execute(array("w" => 1));
$counter++;
$batch = new MongoInsertBatch($collection);
}
}
if ( $counter > 0 ) {
$ret = $batch->execute(array("w" => 1));
}
?>
在上面,每个find()
查询和插入操作都是通过.add()
方法添加到一个批处理中发送给服务器的,在提供顺序,用于串行执行。因此,不是等待服务器对每个插入的写入响应,而是分批发送和响应操作,从而减少往返开销。
关于php - 在使用 PHP/Phalcon/MongoDB 插入新文档期间引用现有的 ObjectId,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33257825/
当我想从另一个页面切换到一个页面时,我可以同时找到$this->dispatcher->forward()和 $this->response->redirect() .两者似乎都可以正常工作。 它们之
我在 Ubuntu 15 中运行并安装了 Phalcon v3,但我对我们当前使用 Phalcon v2 的 API 有问题,有没有办法将我安装的 Phalcon 的当前版本降级到以前的 v2? 最佳
我上下搜索,但找不到 Phalcon\Tag 或 Phalcon\Forms 哪一个更适合创建表单。 这两个类都具有创建表单元素的功能。但我发现 Phalcon\Tag 中有一些方便的标签,例如 Ph
我所有的 Controller 都在命名空间 MyApp\Controllers 下因此,正如文档所推荐的那样,我已将默认命名空间设置为: $dispatcher->setDefaultNamespa
我正在使用 Phalcon PHP 制作项目。我已经使用 phalconphp.com 中的说明安装了 Phalcon 和 Phalcon devtools . 我已成功创建我的项目,但 PhpSto
是否可以从 Phalcon 中的查询构建器实例中提取原始 sql 查询?像这样的东西? $queryBuilder = new Phalcon\Mvc\Model\Query\Builder(); $
我正在用 php Phalcon 开发一个项目。 我正在使用 Xampp 服务器。我遵循的安装过程位于此链接上: http://docs.phalconphp.com/en/latest/refere
我有一个 location 表,其中包含该点的 lat、lng 和 geohash 列,以及关联的位置 Phalcon 模型。在 MySQL 中,我有一个 before insert 类型触发器函数,
我正在为我的 PhalconPHP 应用程序使用“多模块”MVC 结构。 我想弄清楚的一个问题是如何将我的“主布局” View 配置为位于模块 View 文件夹之上。 换句话说,我想要一个主“主布局”
我需要知道如何使用 phalcon 模型进行子查询类型选择? 例如,我想选择所有查看过我的用户,它们存储在 UserView 表中,列为“id”、“user_from”、“user_to”(由用户表
我正在尝试安装 Phalcon4与 php7.4-fpm我看到 phalcon 的 ini 文件已加载到我的 phpinfo() 中。这里 但我仍然收到以下错误 Problem 1 - pha
我需要在变量中呈现电子邮件模板以便稍后发送它们(它们存储在 .phtml 文件中),而且我真的不想实现我的特殊类来处理这个问题。 是否可以不渲染 Controller Action View ,而是渲
我在指定的框架上有一个小型应用程序。如果我的应用程序失败,我想控制用户看到的内容。这不应是标准的Web服务器响应,不同的浏览器会以不同的方式显示该响应。在这方面,我想使用Falcon \ Debug。
我正在将 Phalcon 与 Angular JS 一起使用,但遇到了问题,Phalcon 正在捕获我所有的 Angular 路由。目标是首先调用路由/dashboard 来加载 Angular、jQ
几天前我安装了Phalcon PHP,我对它越来越兴奋了。现在我想试用 Phalcon Devtools。我刚刚像在 installation manual via Composer 中一样安装了它(
我必须建立数据库,即 master 和 xyz,因为我需要在应用程序中连接这两个数据库。 那么是否可以在一个应用程序中连接多个数据库,是的,那么如何。? 最佳答案 在 DI 中设置您的连接: //Th
后来我和一起工作symfony 框架。在这个框架中,我们可以使用 轻松构建多语言项目。 FOSUserBundle .但我不知道在 做什么法尔康 !在 Phalcon 文档( multi-lingua
我不明白为什么开发人员会使用 Phalcon 的 Volt 模板引擎。 最后,在编译之后,生成了相同的 PHP 文件,我必须首先手动编写这些文件。对我来说,它看起来只会对性能有害。 答案是“这样您就可
做完$this->dispatcher->forward()之后我理解正确吗?或 $this->response->redirect()我需要手动确保其余代码不会被执行?如下所示,还是我错过了什么?
我正在尝试像这样为我的模板创建宏: {%- macro bField(form, name, attributes) %} {{ form.label(name) }}
我是一名优秀的程序员,十分优秀!