Node.js와 함께 mongodb를 사용하는 웹 소켓 서버를 구축하고 있습니다.Mongo JSON 문서 -> JSON -> BSON
mongo db에 액세스하기 위해 node-mongodb-native를 라이브러리로 사용하고 있습니다.
그래서 ID를 추측하고{ _id: { id: 'L?#&\u008e\u00ad\u000e\u008f\u0014\u0005\u0000\u0000' }
, y: 3
, favorite_color: 'orange'
, x: 14766
}
는 BSON 개체 ID는 다음과 같습니다 제가 DB에서 개체에 CONSOLE.LOG에게 (sys.inspect (항목))를 호출 할 때
나는 다음과 같다 뭔가를 얻을 수 몽고가 사용합니다.
JSON을 사용하여 클라이언트 웹 브라우저에이 객체를 보내고, 객체를 가져 와서 서버로 다시 보내야합니다.
{"_id":"4c3f23268ead0e8f14050000","y":3,"favorite_color":"orange","x":14766}
그래서 ID가 약간의 진수 인코딩 된 문자열로 전환되었습니다
I JSON.stringify (항목), I는 다음과 같습니다 뭔가를 얻을
. 클라이언트로 보내면 클라이언트가 다시 보냅니다. 이제 db로 업데이트해야합니다. 나는 JSON.parse (항목)이 정상적인 개체로 얻을 실행,하지만 여전히 다음과 같습니다{ _id: '4c3f23268ead0e8f14050000'
, y: 3
, favorite_color: 'orange'
, x: 14766
}
그 _id는 MongoDB를에서 찾아 볼 수 없습니다.
mongo에서 조회에 사용할 수있는 형식으로 다시 변환하려면 어떻게해야합니까? --update--
흥미롭게 나는 문서를 얻을 수 findOne({_id:item._id}, collection)
를 사용할 수 있지만, 나는이 작업을 수행 할 경우 :
findOne({_id:{id : item._id.id}}, collection)
나는 결과가 나타나지 않습니다. 나는 mongo _id 객체에 특별한 것이 있다고 생각한다.
모두{_id:item._id}
과 같이 밖으로 버려진 {_id:{id : item._id.id}}
: 해결
{ _id: { id: 'L?#&\u008e\u00ad\u000e\u008f\u0014\u0005\u0000\u0000' } }
--Another 업데이 트를 ---
는 통합 테스트 파일에 일부 개체 ID 조작이 있었다.objectId = new mongo.ObjectID.createFromHexString ('47cc67093475061e3d95369'); 은 내가 찾고있는 _id를 제공합니다.
objectId.toHexString() '47cc67093475061e3d95369d'
그래서, 문제는 내가 추측 해결? – Aillyn
아니, 진짜 문제는 클라이언트가 mongodb에서 객체를 검색하는 데 사용할 수있는 클라이언트를 다시 보낼 수있는 클라이언트 브라우저 (바람직하게는 json)에 보낼 수있는 mongo id 형식이 필요하다는 것입니다. – RobKohr