在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\"}]"
有什么建议吗?
谢谢, 吉姆
答案 0 :(得分:2)
我觉得它比它看起来容易。我刚刚使用了嵌套的BSON([])语句,它就像一个冠军。测试代码如下所示:
b := BSON(['test','this is a test',
'Phones', BSON(['number', '1234', 'number','54533'])]);
在MongoDB中生成的JSON是正确的。
答案 1 :(得分:2)
TMongoWire的BSON文档是围绕变体数组构建的,因此您可以使用Variants单元中的VarArrayOf
函数来制作上述文档:
BSON(['ourID','XYZ1',
'Company','XYZ Company',
'Phones',VarArrayOf([
BSON(['number','714-999-9999', 'type','business']),
BSON(['number','714-987-6533', 'type','cell'])
])]);