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 文档是围绕变量数组构建的,因此您可以使用VarArrayOfVariants 单元中的函数来制作上述文档:

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 回答