1

Delphi では、TMongoWire を使用して、可変数の電話番号で会社のプロファイルを保存しようとしています。結果として保存された JSON を次のようにしたかったのです。

{"ourID":"XYZ1", 
 "Company":"XYZ Company",
  "Phones": [{"number":"714-999-9999", "type":"business"},
             {"number":"714-987-6533", "type":"cell"}]
}

しかし、電話をMongoDBに入れる方法がわかりません。電話用の JSON を自分で作成して Phones フィールドに渡そうとしましたが、保存されたのは JSON 配列ではなく、JSON の文字列でした。次のようになります。

"Phones":"[{\"Phone\":\"123-456-7890\", \"pType\":\"Home Phone\", \"notes\":\"this is the home phone\"}]"

助言がありますか?

ありがとう、ジム

4

2 に答える 2

2

TMongoWire の BSON ドキュメントはバリアント配列を中心に構築されているVarArrayOfため、バリアント ユニットの関数を使用して上記のドキュメントを作成できます。

BSON(['ourID','XYZ1', 
  'Company','XYZ Company',
  'Phones',VarArrayOf([
    BSON(['number','714-999-9999', 'type','business']),
    BSON(['number','714-987-6533', 'type','cell'])
  ])]);
于 2013-09-23T21:26:35.670 に答える
2

見た目より簡単だったと思います。ネストされた BSON([]) ステートメントを使用しただけで、チャンピオンのように機能しました。テスト コードは次のようになります。

  b := BSON(['test','this is a test',
             'Phones', BSON(['number', '1234', 'number','54533'])]);

結果の JSON は MongoDB で正しいです。

于 2013-09-23T08:32:40.960 に答える