Официальный драйвер MongoDB C #: отображение объектов на короткие имена для ограничения пространства - PullRequest
7 голосов
/ 21 февраля 2011

Я искал способ сопоставить объекты Bson, определенные с использованием читаемых имен («категория»), с короткими именами («ct») и ограничить пространство, занимаемое именами элементов в основной базе документов. Я видел это с помощью других драйверов, но как насчет использования официального драйвера. Как я могу сделать, где это лучшее место, чтобы определить. Можно ли использовать длинные имена в запросах и получать краткое содержание?

спасибо.

Ответы [ 3 ]

21 голосов
/ 22 февраля 2011

Так как на самом деле никто не дал ответа на вопрос, вот он.

С помощью официального драйвера вы можете сделать это, украсив имя свойства с помощью BsonElement.Например:

public class SomeClass
{
    public BsonObjectId Id { get; set; }

    [BsonElement("dt")]
    public DateTime SomeReallyLongDateTimePropertyName { get; set; }
}

Теперь драйвер будет использовать «dt» в качестве имени свойства BSON.

Однако в настоящее время нет способа выполнить запрос с использованием имени свойства POCO.Вы должны будете использовать «dt» в своих запросах.Существует отдельный проект, построенный поверх драйвера C #, который предоставляет возможности запросов в стиле LINQ, но я не проверял его, чтобы убедиться, что он будет выполнять то, что вы просите.

7 голосов
/ 13 октября 2015

Лучше содержать модели в чистоте. А MongoDB.Driver позволяет делать это снаружи.

BsonClassMap.RegisterClassMap<SomeClass>(x =>
{
     x.AutoMap();
     x.GetMemberMap(m => m.SomeReallyLongDateTimePropertyName).SetElementName("dt");
});
0 голосов
/ 21 февраля 2011

Рассмотрим запись

{last_name: "Smith", best_score: 3.9}

Строки "last_name" и "best_score" будут храниться в BSON каждого объекта.Использование более коротких строк позволит сэкономить место:

{lname: "Smith", оценка: 3,9}

Сохранит 9 байтов на документ.Это, конечно, снижает выразительность для программиста и не рекомендуется, если у вас нет коллекции, в которой это вызывает серьезную озабоченность.

Имена полей не сохраняются в индексах, так как индексы имеют предопределенную структуру.Таким образом, сокращение имен полей не поможет размеру индексов.В общем случае нет необходимости использовать короткие имена полей.

проверьте источник для получения более подробной информации

, но другая сторона описана в известной теме " Вы сохранили 5центов, и ваш код не читается, поздравляю!"

И мое собственное мнение, что короткое имя - плохой способ.

...