我通过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'}]
...
)
DB命令是:
$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 Dali的回答是正确的。但是为了将来参考,真正的问题是数组本身(来自在python中由urllib2发出的POST rquest)
u'string'
失败了PHP的json_decode。将其修复为"string"
解决了问题
答案 0 :(得分:0)
一切都很简单。你正在传递成分中的一个字符串。所以它在db。中显示为字符串。
要验证我是否正确运行gettype($_POST['ingredients'])
,您会看到结果为str
。很可能你的字符串是JSON。
您可以使用json_decode()
abd将其解析到您的mongo中。