我正在尝试save()
对象内的记录。问题是我得到MongoCursor()-errors
或unexpected 'array' (T_ARRAY)
。例如:
这是我的MongoDB集合:
[
{
"id": "dfK15ale12",
"keys": {
"gcm_key": "abc",
"app_secret": "123"
}
}
我想更新gcm_key
里面的keys
,这是我的PHP代码:
$db->apps->save(
array("_id" => $update['_id'])
array("$push" => 'keys.gcm_android' => $gcm_android);
);
这给了我以下错误:
Parse error: syntax error, unexpected 'array' (T_ARRAY) in C:\xampp\htdocs\api\update.php on line 3
我用Google搜索并在Stack上查找答案,但我什么也没找到。也许我错过了什么。我不知道,正确的mongoDB游标是什么,哪个是save()
gcm_key
的最简单方法?
答案 0 :(得分:1)
您似乎想要的操作是update
$db->apps->update(
array('_id' => $update['_id']),
array('$push' => array('keys.gcm_android' => $gcm_android))
);
但不清楚你想要的最终结果是什么。这将产生以下结果:
{
"_id" : ObjectId("532aa3d15fcd8ecb9ae23567"),
"id" : "dfK15ale12",
"keys" : {
"gcm_key" : "abc",
"app_secret" : "123",
"gcm_android" : [
123
]
}
}
假设您的123
变量中的值为$gcm_android
。如果您有阵列,请查看$pushAll。
如果您只想将其他属性添加到密钥,请使用$set:
$db->apps->update(
array('_id' => $update['_id']),
array('set' => array('keys.gcm_android' => $gcm_android))
);
这是你的结果:
{
"_id" : ObjectId("532aa3d15fcd8ecb9ae23567"),
"id" : "dfK15ale12",
"keys" : {
"gcm_key" : "abc",
"app_secret" : "123",
"gcm_android" : 123
}
}
答案 1 :(得分:0)
你的语法错了:
$db->apps->save(
array("_id" => $update['_id'])
array("$push" => 'keys.gcm_android' => $gcm_android);
);
应该是:
$db->apps->update(
array("_id" => $update['_id']),
array('$push' => array('keys.gcm_android' => $gcm_android))
);
这就是错误在这里告诉你的事情:
意外'阵列' (T_ARRAY)
实际上它首先是逗号,然后是数组
答案 2 :(得分:0)
$db->apps->update(
array('_id' => new MongoId('YOURIDGOESHERE')),
array('$set' => array('keys.gcm_android' => $gcm_android))
);