2013-10-21 4 views
0

그래서 질문하기 전에 Mongo가 필드 이름에 마침표 (.)를 사용할 수 없다는 것을 알고 싶습니다.필드 이름에 DOT (마침표)가있는 MongoDB 업데이트 쿼리

놀랍게도 PHP는 mongo에 마침표가있는 데이터를 다차원 배열의 필드 이름으로 삽입 할 수있었습니다. 나는 PHP 버전 5.4 Mongo 드라이버 1.4를 사용한다.

그래서 배열 구조는 somewaht 등이다

Array(
["field1"] => "value", 
["field2"] => "123", 
["field3"] => array(["abc.def"] => array(["test"] => "value") 
); 

내가 달성하고자하는 정수하는 문자열에서 FIELD2 값을 변경합니다.

거대한 데이터와 응용 프로그램은 그것에 달려 있습니다. 유형을 문자열에서 정수로 또는 정수에서 문자열로 업데이트해야합니다. 나중에 어떤 응용 프로그램을 삽입할지 제어 할 수 있지만 입력 한 내용은 변경할 수 없습니다. 같은 해결 방법.

누군가가 이것을 생각하면 큰 희망이 있습니다 .. !! ;)

+0

MongoDb의 데이터 구조는 어떻게됩니까? 일종의 데이터 수정을하려고합니까? 당신이 성취하려고 시도하고 있거나 이미 시도한 것을 분명하지 않습니다. – WiredPrairie

+0

데이터 구조가 위와 같이 잘 어울린다면 위의 PHP 배열이 mongodb에 JSON으로 삽입 된 동일한 구조로 표시 될 수 있습니다. 어떻게 든 해결 방법을 찾았습니다. ;) –

+0

문제가 해결 된 것 같습니다. 나는 MongoDB에서 데이터가 어떻게 보이는지를 묻고 있었다. – WiredPrairie

답변

1

가장 좋은 해결 방법은 db.collection.update()를 사용하는 것이 었습니다. 나는 오랫동안 Excel의 오랜 절차를 거치고 각 행마다 비슷한 쿼리를 만들어야했지만, 그 후에 db.collection.find()를 사용할 수 있음을 깨달았습니다. forEach();

솔루션을 줄이려면 forEach를 사용하여 업데이트 할 데이터와 필드와 일치하는 조건으로 db.collection.update()를 반복 실행하십시오. 쿼리를 문자열로 포맷 한 다음 eval();

당신이 더 짧은 길을 발견했다면 제발 알아주세요 .. !!