簡體   English   中英

從php7將json插入Mongodb

[英]Insert json to Mongodb from php7

我正在從php5.6到7.x的遷移項目中工作,在該項目中,我有一個在鍵中帶有特殊字符的json。 如何將其插入mongodb?

在php5.6中,我使用MongoClient作為內部轉換特殊字符的驅動程序,因此能夠插入文檔。 但是我無法在php7中實現相同的功能。 我正在使用MongoDB \\ Driver \\ Manager連接到Mongodb。

編輯:

我有一組來自其他系統的api,格式如下

$content_array=
{
    "context": {
        "extensions": {
            "http://id.tincanapi.com/extension/platform": "web",
            "http://id.tincanapi.com/extension/browser-info": "Mozilla/5.0",
            "http://id.tincanapi.com/extension/host-session-id": "4e320015"
        }
    }
}
$dbconnection = new MongoDB\Client($uri);
$db = $dbconnection->$dbname;
$collection = $db->$dbcoll;

$collection->insertOne(json_decode($content_array));

上面的操作失敗,並說“無效的插入文檔:鍵不能在鍵中包含\\ .. \\ ::”。 我知道在密鑰中使用這些字符不是一個好習慣,但是由於這段代碼在使用MongoClient的php5.6中有效,因此我希望在遷移到php7時將更改保持在最小。

編輯2:

這段代碼在php5.6中有效

$dbconnection = new \MongoClient($dbhost, $options); 
if (!empty($dbconnection)) {
$db = $dbconnection->selectDB($dbname);
$collection = $db->selectCollection($dbcoll);
$status = 0;
if (!empty($collection)) {
$collection->insert(json_decode($content_array));
$status = 1;
}

編輯3:

我的一部分是錯誤的,沒有一次不給出所有細節。.我在插入到mongo之前先做一個json_decode轉換為本地php數組。

任何幫助,將不勝感激。 謝謝。

總結:盡管各種版本的服務器都將插入帶有此類字段名稱的文檔,但是直到3.6(根據手冊),才對此類字段名稱施加了限制。 盡管對手冊進行了更改,但是MongoDB驅動程序正式不支持插入此類字段名稱,並且可能直到服務器的某些將來版本實現轉義方案(SERVER-30575)時才支持。

在較舊版本的PHP驅動程序中未遇到該錯誤的原因是libmongoc直到1.6.0(CDRIVER-1341)才開始執行該限制。 PHP驅動程序1.2.x仍在使用libmongoc1.5.x。 當我們碰到libmongoc 1.8.x時,該異常將首先出現在PHP驅動程序1.3.x中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM