带有mongodb的php7如何更新到密钥(包含点)

时间:2018-07-06 03:08:30

标签: php mongodb

我正在使用php7.x和Mongodb 3.6.5。而且我想作为json键添加到mongodb的“我的IP”中。

$bulk = new MongoDB\Driver\BulkWrite(['ordered' => false]);
$bulk->update(
    ['m_model' => $_POST['mid']],
    ['$set' => ['statistics.play.' . $_SERVER['REMOTE_ADDR'] => 
    ['time'=>$connectionTime]]],
    ['multi' => false, 'upsert' => false]
);
$conn -> executeBulkWrite('db.tempName', $bulk);

我正在使用以下代码,它将成为一些json文件。

enter image description here 但我不想要这种数据结构。

asdf 我想要这样。

此外,我也不想将点替换为任何单词或哈希(md5等。)。

1 个答案:

答案 0 :(得分:0)

很遗憾,您无法执行此操作,因为The field names cannot contain the dot (.) character.See here)。 由于您不想用可接受的字符替换点,因此实现此目的的唯一方法是针对以下内容更新方案:

{
  statistics:
    {
      ...,
      play:[{ip:"1.1.1.1",time:"asdf"}]   // <== Note the array
    }
}

此外,将来查询play.time(任何数组条目中的时间)比play.1_1_1_1.time,play.1_1_1_2.time等更容易