我在使用PHP和Javascript的MongoDB时遇到问题。通过ajax作为参数传递的Mongodb PHP更新文档不保存
1)我向集合写出一个文档并确认它在那里。
{
"_id": ObjectId("500d9f072d854e2001000018"),
"field1": "happenstance",
"mydata": "balls grinders",
"desc": "johnsig"
}
2)使用JavaScript我通过调用一个PHP程序获取从集合中的记录。
function fetch(){
$.ajax({
url: "sbugger.php",
dataType: "json",
data: "mode=fetch",
success: function(data){
record = data;
}
});
}
3)I修改 “desc” 的元件,并通过将其返回到php程序
function save(){
record.desc=" HELLO THERE FELLA";
jString = encodeURIComponent(JSON.stringify(record));
myData = "mode=save&record="+jString;
url = "sbugger.php";
$.ajax({
url: url,
type: 'POST',
data: myData,
success: function(data){
document.write(data);
} });
}
在PHP端的代码保存文档是:
$stuff = json_decode($_REQUEST["record"],true);
$collection->save($stuff);
var_dump($stuff);
var_dump($db->lastError());
因为我没有修改$ id我认为 这只会更新记录d到位。
相反,我得到这个的var_dump:
object(stdClass)[4]
public '_id' =>
object(stdClass)[5]
public '$id' => string '500d9f072d854e2001000018' (length=24)
public 'field1' => string 'happenstance' (length=12)
public 'mydata' => string 'balls grinders' (length=15)
public 'desc' => string ' HELLO THERE FELLA' (length=18)
这lastError味精
阵列 'ERR'=>字符串 '无效操作者:$ ID'(长度= 21) '代码'= >内部10068 'N'=> INT 0 'lastOp'=> 对象(MongoTimestamp)[8] 公共 '秒'=> INT 1343070014 公共 'INC'=> INT 1 '的ConnectionId'=> INT 56143 'ok'=>浮点数1
我一直在用这个击打我的头靠着墙1.5天。
任何MongoDB专家都可以帮助我吗?
P.S.如果我仍然只是在一个PHP程序中找到并完美保存工作。 似乎当传递json来回有一个问题。