【问题标题】:mongodb 'document' variable define in PHPmongodb'document'变量在PHP中定义
【发布时间】:2013-01-03 08:37:05
【问题描述】:

我正在使用 CodeigniterPHP。 我们可以为 mongodb 查询定义空数组,如下所示,

$db->user->insert(array('report'=> array()));

我如何在 PHP? 中为 mongodb 定义空的 document(datatype)

我知道,我可以在使用另一个运行时查询(使用 $set 或其他)时创建 document 变量。但我需要创建document 变量,当我insert

如果我创建如下文档变量,

$a = array();
$db->user->insert(array('report'=> $a));

以下代码不起作用,

$db->user->update(
    array('user' => $user ), 
    array('$set' => array(
        'report.' . $number => 
             array('id'=>$number, 'on' => time(), 'status'=> 0)
    )));

这里,$number 是字符串变量。

【问题讨论】:

  • 您是指文档中名为document的字段吗?
  • @Sammaye document 是 MongoDB 中的数据库字段类型
  • 如果你像你的例子一样传递一个空的 array() 会发生什么?这应该可以工作并存储一个空文档。
  • @SaschaM78 是吗?你有解释文档字段类型的页面吗?
  • @SaschaM78 That: docs.mongodb.org/manual/reference/glossary/#term-bson-types 实际上是 BSON Documents 支持的类型列表。

标签: php codeigniter mongodb mongodb-php


【解决方案1】:

终于没办法回答我的问题了。我搜索了很多方式。因此,我们可以在使用另一个运行时查询(使用 $set 或其他)时创建 document 变量。谢谢。

【讨论】:

    【解决方案2】:

    MongoDB PHP 驱动程序支持发送空对象(它最终没有验证以确保您发送有价值的东西)以进行保存,但检测到这种保存对象的方法在不知道_id 的情况下将无用您刚刚保存的对象可以这样做:

    $a = array();
    $db->user->insert($a);
    var_dump($a['_id']);
    

    由于如果传递了一个变量,MongoDB 的插入函数将修改(通过引用)原始变量并将_id 字段添加到它。

    但是,您不能将“空”对象(没有不可变 _id 的对象)保存到普通集合中。对于封顶集合之类的东西,这当然是不同的。

    【讨论】:

    • 那又怎样?你说的括号是什么意思?
    • @KarSho 是的,所以你在编辑的最后一行看到 3 个括号,应该只有两个。您能否向我们展示您的更新内容的示例文档,您能否告诉我们$user 是什么?你确定这真的找到了一个文档吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多