2013-08-19 2 views
0

PHP 사이트에서 MongoDB에 데이터를 삽입하는 특별한 설정이 있습니다. 그런 다음 .NET에서 데이터를 읽고 API로 제공합니다.PHP로 MongoDB에 .NET을 삽입하여 데이터 읽기

(PHP를 통해) 레코드를 삽입 한 후 .NET API는 데이터 읽기를 시도 할 때 다음 오류를 발생시킵니다.

$item = Item::create(array(
     // fields 
    )); 

그리고이 같은 ID 필드가에 모델 클래스는 읽는 :

An error occurred while deserializing the Id property of class Project.ModelClass: Cannot deserialize Guid from BsonType ObjectId. 

삽입을하는 코드 인 API가 제대로 다른 항목을 될 것입니다

 public Guid Id { get; set; } 

을 다른 데이터 소스에서 가져온 동일한 컬렉션에 있습니다.

.NET 모델 클래스로 ID를 읽고 역 직렬화 할 수 있도록 PHP 삽입시 특별한 것을해야합니까?

도움이 필요하십니까?

스튜어트

+0

PHP로 삽입 된 MongoDB 문서가 어떻게 보이는지 보여 줄 수 있습니까? –

+0

PHP 삽입 ID는 'ObjectId ("xxx ... xx")와 같으며 .NET은'BinData (3, "xxxx ... xxx")와 유사합니다. 이상적으로 나는 .NET을 그대로 유지하고 일치하도록 PHP를 변경하고 싶습니다. – Stuart

+0

PHP 코드가 삽입하는 필드의 예를 들려 줄 수 있습니까? 귀하의 의견에서 그것은 문서의 _id로 GUID를 사용하려는 것 같지만 PHP 코드가 실제로 삽입되는 필드는 알려주지 않았습니다 (PHP 코드는 ObjectId를 삽입하는 것처럼 보입니다. GUID). –

답변

1

ObjectId 유형을 역 직렬화 할 수는 없지만 필드는 실제로 PHP 코드가 삽입되고 있는지 우리를 표시하지 않았습니다. 그 가정

하지만, PHP 코드 그렇지 않으면 PHP 드라이버가 자동으로 생성 ObjectId_id 필드를 설정합니다, 명시 적으로 GUID_id를 삽입해야하는 경우입니다.

$collection->insert(array(
    "_id" => new MongoBinData($guid, 3) 
)); 

_id 대신 기본 ObjectIdGUID로 설정해야합니다.

+0

응답 해 주셔서 감사합니다. "실제"GUID로 저장하면 모든 작업을 처리하는 것처럼 보였습니다. – Stuart

1

봅니다

public ObjectId Id { get; set; } 

귀하의 Id 필드가 ObjectId 형식으로 저장됩니다 C#으로 ObjectIdGuid을 대체한다. 그리고 C#을 드라이버를 사용하면 문서의 _idGUID을 사용하려는 것처럼 소리 의견에서 Guid