如何从mongo文档中删除_v和_t

时间:2018-03-15 19:09:37

标签: c# mongodb

我已经搜遍过所有的解决方案。以下是我插入数据的方式:

string value = db.StringGet("test");
string cleaned = value.Replace("u'", "'").Replace("\"", "");
var jsonDoc = Newtonsoft.Json.JsonConvert.SerializeObject(cleaned);
Dictionary<string, string> dict = Newtonsoft.Json.JsonConvert.DeserializeObject<Dictionary<string, string>>(jsonDoc);
values.Add(dict);

_collection.InsertMany(values.Select(x => x.ToBsonDocument()));

以下是数据在数据库中的显示方式

{ 
    "_id" : ObjectId("5aaabf7ac03af44892673031"), 
    "_t" : "MongoDB.Bson.BsonDocument, MongoDB.Bson", 
    "_v" : {
        "profile" : "myprofile", 
        "source" : "thesource", 
        "hostname" : "myhost", 
        "pgm" : "mypgm"
    }
}

我不希望在mongo中格式化这样的数据。我的原因是因为我有几个客户端访问数据库。我宁愿将数据格式化为:

{ 
    "_id" : ObjectId("5aaabf7ac03af44892673031"), 
    "profile" : "myprofile", 
    "source" : "thesource", 
    "hostname" : "myhost", 
    "pgm" : "mypgm"
}

2 个答案:

答案 0 :(得分:0)

在我们的团队中,我们通过序列化和反序列化对象(使其成为ExpandoObject)解决了该问题。尝试这样的事情:

    JsonSerializer DynamicDataJsonSerializer;
    DynamicDataJsonSerializer = JsonSerializer.Create(JsonConverterSetup.GetTransparentSerializerSettings());

    MyClass dataToSaveToMogo;
    var dataToSaveToMogoAsDynamic = DynamicDataJsonSerializer.Deserialize<ExpandoObject>(DynamicDataJsonSerializer.Serialize(dataToSaveToMogo));

然后保存dataToSaveToMogoAsDynamic。

希望有帮助

答案 1 :(得分:0)

您将需要调用BsonDocument类的Remove属性,并指定“ _t”作为参数才能删除“ _t”键。 “ _v”也是如此

npm run dev