Bend.BsonHelper._traverseToField C# (CSharp) Метод

_traverseToField() приватный статический Метод

private static _traverseToField ( BsonDocument doc, string field_name, string &last_field_part, BsonDocument &subdoc ) : void
doc BsonDocument
field_name string
last_field_part string
subdoc BsonDocument
Результат void
        private static void _traverseToField(BsonDocument doc, string field_name, out string last_field_part, out BsonDocument subdoc)
        {
            string[] parts = field_name.Split('.');
            BsonDocument doc_cur = doc;

            for (int pos = 0; pos < (parts.Length - 1); pos++) {
                var part_name = parts[pos];
                if (doc_cur.Contains(part_name) &&
                    doc_cur.GetElement(part_name).Value.BsonType == BsonType.Document) {
                    doc_cur = doc_cur.GetElement(part_name).Value.AsBsonDocument;
                } else {
                    var newsubdoc = new BsonDocument();
                    doc_cur.Set(part_name, newsubdoc);
                    doc_cur = newsubdoc;
                }
            }

            last_field_part = parts[parts.Length - 1];
            subdoc = doc_cur;
        }