2014-04-06 2 views
0

MongoDB PHP 드라이버를 통해 MongoDB에 데이터를 추가하고 있습니다.mongo PHP는 배열을 문자열로 변환합니다.

$ _POST의 배열은 일단 DB에 있으면 문자열로 전송됩니다.

$ _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의의 결과() 입니다 :

{ .... 
"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'}]", ..... } 

가 어떻게 배열로 보관하지

?

편집 :
@ 살바도르 달리의 대답은 정확합니다. 하지만 나중에 참조 할 수있는 실제 문제는 배열 자체 (파이썬에서 urllib2에 의해 만들어진 POST 요청에서 나온 것임) u'string'이 PHP의 json_decode에 실패했습니다. "string"로 해결하면 문제가 해결됩니다.

+0

mongo DB가 json으로 데이터를 반환합니다. 'json_decode ($ data, true);를 사용하여 PHP 수준의 데이터를 변환해야합니다. 그러면 배열이 생깁니다. –

+0

나는 이것을 몽고 껍질에서 묻고있다. 나는이 경우 사실이 아니라고 생각한다. ... – Boaz

+0

@AbhikChakraborty 틀렸다. 그는 껍질에서 이것을하고 있는데, 이는 그가 물건을 본다는 것을 의미합니다. –

답변

0

모든 것이 간단합니다. 당신은 당신의 끈을 당신에게 전달하고 있습니다. 그래서 db로 문자열로 나타납니다.

내가 맞는지 확인하려면 gettype($_POST['ingredients'])을 실행하면 결과는 str입니다. 대부분 문자열이 JSON 일 것입니다.

json_decode() abd로 구문 분석 할 수 있습니다. 몽구스에 올바르게 삽입하십시오.

+0

흠 ... 당신이 올바른지 - 나는 getType로에 문자열을받을 수 있나요 ... 나는 내가 그것을 해결 생각한 거기에 코드가 있습니다 foreach는 ($ _POST $ 같은 핵심 => $ 값) {\t \t \t \t \t을 \t \t \t \t \t \t 경우 ($ this-> is_json ($ _ POST [$ 키])) $ _POST [$ 키 = json_decode ($ _ POST [$ 키]); \t \t \t} 하지만 분명히 그렇지 않습니다. 이견있는 사람? – Boaz

+0

사실 ... 이제 몽고에서는 null이 되겠지요. 조사 할게. 당신의 대답은 좋습니다. 덕분에 – Boaz

+0

@Boaz 그래서 문자열에 json_decode를 실행할 때 무엇을 얻고 있습니까? 어레이 나 아니야? 아니면 문자열이 유효한 json이 아닙니다. –

관련 문제