Несмотря на то, что mongodb допускает это в ядре базы данных и в оболочке mongo:
> db.test.insert( { "text.this" : true } )
WriteResult({ "nInserted" : 1 })
> db.test.find()
{ "_id" : ObjectId("5b0f2095e1bd0eaac6294dcf"), "text.this" : true }
>
Я настоятельно рекомендую это сделать, так как запросы будут кошмаром.
Однако, еслиу вас есть строка JSON в C #, я бы использовал что-то вроде Json.NET и разделил .
на внедренный документ:
string json = "{ \"application.data\":\"process\" }";
var jObject = JsonConvert.DeserializeObject<JObject>(json);
var jWithDot = jObject.Properties().Where(x => x.Name.Contains(".")).ToList();
foreach (var j in jWithDot)
{
var names = j.Name.Split(".");
var jProperty = new JProperty(names[0], new JObject(new JProperty(names[1], j.Value)));
j.Replace(jProperty);
}
// { "application": { "data": "process" } }
var newJson = jObject.ToString();
Затем вы можете разделить это в MongoDB как обычно
var mongoClient = new MongoClient();
var mongoDatabase = mongoClient.GetDatabase("test");
var collection = mongoDatabase.GetCollection<BsonDocument>("test");
collection.InsertOne(BsonDocument.Parse(newJson));
После выполнения вы увидите в оболочке следующее:
> db.test.find()
{ "_id" : ObjectId("5b0f236605267300e0911e43"), "application" : { "data" : "process" } }