mongo PHP 将数组转换为字符串


mongo PHP turns array into strings

我正在通过MongoDB PHP驱动程序向MongoDB添加数据。

出于某种原因,$_POST 中的数组一旦进入数据库就会传输到字符串中。

$_POST 内容:(打印print_r - 仅粘贴相关数组

Array
(
...
...
   [ingredients] => [{u'amount': u'1 (14 ounce) can', u'name': u'black beans, drained', u'short_name': u'black beans'}, {u'amount': u'1 (8 ounce) jar', u'name': u'salsa', u'short_name': u'salsa'}]
...
)

数据库命令为:
$success = $collection->insert($_POST);

mongoDB(使用 mongo shell)的结果是:

{ ....
"ingredients" : "[{u'amount': u'1 (14 ounce) can', u'name': u'black beans, drained',     
u'short_name': u'black beans'}, {u'amount': u'1 (8 ounce) jar', u'name': u'salsa',     
u'short_name': u'salsa'}]", ..... }

如何将其保留为数组?

编辑:
@Salvador大理的回答是正确的。但为了将来参考,真正的问题是数组本身(来自 urllib2 在 python 中制作的 POST rquest)u'string'未能满足PHP的json_decode。修复它"string"解决了问题

一切都很简单。你正在传递你的成分中的字符串。所以它在 db 中显示为字符串。

要验证我是否正确,请gettype($_POST['ingredients'])运行一些操作,您将看到结果为 str .您的字符串很可能是 JSON。

你可以用 abd json_decode()正确地将它插入到你的 mongo 中来解析它。