0

PHP サイトから MongoDB にデータを挿入するという異常なセットアップがあります。その後、データは .NET によって読み取られ、API として提供されます。

(PHP 経由で) レコードを挿入した後、データを読み取ろうとすると、.NET API は次のエラーをスローします。

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

挿入を行うコードは次のとおりです。

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

読み込まれるモデル クラスには、次のような Id フィールドがあります。

        public Guid Id { get; set; }

API は、別のデータソースからインポートされた同じコレクション内の他のアイテムを正しく提供します。

Id を読み取って .NET モデル クラスに逆シリアル化できるようにするために、PHP 挿入で何か特別なことをする必要がありますか?

どんな助けでも大歓迎です!

スチュアート

4

2 に答える 2

1

C#で置き換えGuidてみてくださいObjectId

public ObjectId Id { get; set; }

フィールドIdはタイプとして保存されObjectIdます。ObjectIdまた、C# ドライバーは型をデシリアライズできませんGuid

于 2013-08-19T10:08:32.903 に答える
1

GUIDあなたのコメントから、ドキュメントのとしてa を使用したいように思え_idますが、PHP コードによって実際にどのフィールドが挿入されているかを示していません。

ただし、その場合は、PHP コードで を明示的に挿入する必要があります_idGUIDそうしないと、PHP ドライバーが自動的に_idフィールドを生成されたに設定しますObjectId

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

をデフォルトではなく_idaに設定する必要があります。GUIDObjectId

于 2013-08-26T07:35:22.260 に答える