首页 > 解决方案 > 将c#空格分隔字符串转换为MongoDB BsonDocument

问题描述

我成功地将 BSONdocument 上传到我的云 MongoDB 数据库,例如:

var temp = new BsonDocument
{
    {"timestamp", now},
    {"room1",20},
    {"room2",24},
    {"room3",14}
};

然而,这只是一个测试,我真正的应用程序正在获取一个空格分隔的字符串,我仍然需要将其转换为这样的 BsonDocument。我怎样才能做到这一点?要转换的字符串如下所示:

string data = "pm 49.8 42.4 2.2 52.1 51.6 50.8 10.3 120.0 120.0 20.0 20.0 120.0 0.0 0.0 20.0 20.0 0 0 0 0 0.0 0 1 0.0 53.7 0.0 0.0 80.0 46.4 27.7 20.0 22.5 57.0 51.0 27.0 26.0 19.5 -20.0 -20.0 20.0 20.0 -20.0 0.0 0.0 20.0 20.0 0 28.8 48.2 57 0.0 0.0 0.0 0.0 0.0 0.0 0.0 121.0 61.0 10.4 0.0 0.0 0.0 0.00 0.00 0.00 0.00 -20.0 0.0 20.0 20.0 -20.0 1 1 1 1 1 1 1 20.0 20.0 20.0 20.0 22.5 20.0 20.0 -20.0 1 15.9 0.0 0 0 2 -20 61 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 1 6 0 0 0 0 0 0 0 0 0 0 0 1 51 51 0000 0003 0000 0003 2000 0000 0000 0000"

BsonDocument 的左侧(room1, room2,... 在上面的示例中)项目可能会变成例如 ID0, ID1, ID2, ... 谢谢!

我要创建的对象的架构可能如下所示:

var whatineed= new BsonDocument
{
    {"timestamp", now},
    {"id0",49.8},
    {"id1",42.4},
    {"id2",2.2}
    ...and so on
};

标签: c#mongodb

解决方案


谢谢你的建议。我尝试了类似的东西,因为我的 Linq 知识太少,但它有效:-)

Console.WriteLine("Trying to send now...");
timestamp = DateTime.Now;
Console.WriteLine(timestamp);
string data = "{'timestamp':'" + timestamp + "'";
string[] split = read.Split(' ');
if (split.Length > 137)
{
   for (int i = 0; i < (split.Length-2); i++)
   {
       data += ", 'id" + i.ToString() + "':'" + split[i+1] + "'";
   }
   data += "}";                            
   var document = new BsonDocument();
   document.AddRange(BsonDocument.Parse(data));
   send(document);
}

推荐阅读