【发布时间】:2016-01-20 08:41:55
【问题描述】:
我已使用以下代码使用 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 次往返
- 第一个获取parentDoc
- 第二个用于插入带有 parentDoc 引用 Id 的 secondaryDoc
是否可以在 1 次往返中执行它们,我可以在辅助文档插入时引用 parentDocId
【问题讨论】: