Pull to refresh

Comments 20

«Я бы сказал неожиданно просто.»

А вы не используете NoRM? Вот именно с него я офигел, как просто с Монго работать из .NET :) Плюс, NoRM не несет никакого over-kill'а в производительности, в отличие от ORM традиционных RDBMS.
NoRM отстает от официального драйвера по фичам — там до сих пор невозможно работать с шаред инстансами. Очень огорчает, что NoRM развивает только один человек, те же решения для Ruby комитят несколько человек.
Зато в NoRM есть реально работающий Linq.
Спасибо, не знал. Но как-то странно использовать «довесок к драйверу».
Думаю что в стандартном драйвере LINQ не имплементирован потому что не может быть имплементирован полность (например join).
NoRM всё равно порядочно допиливать надо, в первую очередь с области поддержки маппинга.
Не знаю насчёт допиливания стандартного драйвера, надо на него посмотреть.

Как-то и то и то по сравнению с Mongoid, скажем, очень печально.
Чем же печально то?
Помоему active record — это печально (взято с mongoid.org/docs/persistence/):
Mongoid::Document
class Person
include Mongoid::Document
field :first_name
field :middle_initial
field :last_name
embeds_one :email
embeds_many :addresses
end

person = Person.where(:first_name => «Dudley»).first
person.last_name = «Moore»
person.save
Ну LINQ нет, это понятно — у них его никогда не было. Я скорее про
1. mongoid.org/docs/associations/ — Relational Associations
2. mongoid.org/docs/extras/

Особенно Relational Associations, я бы даже сказал, поддержка частичной денормализации.

В принципе если я решу использовать Norm и дальше, мы его допилим так или иначе.
Ну если честно не вижу таких прямо невероятных бенефитов, ну есть у меня ссылка на связанный объект в другой коллекции… да и в рамках представленных примеров выглядит это надуманно. Про денормализацию www.mongodb.org/display/DOCS/MongoDB+Data+Modeling+and+Rails#MongoDBDataModelingandRails-ANoteonDenormalization
Ну у меня довольно стандартный пример, у объекта X есть Author, который User.
В Norm это делается не очень просто.
Плюс по поводу денормализации (пример за пределами способностей даже mongoid): если я храню имя Author'а прямо в объекте X, то хотелось бы, чтобы получившийся объект User мог выдать имя без какого-либо lazy load.

Но в принципе в таком виде это тривиально прикрутить, и сделаем.
Почему 1? Я вижу 80 forks и 6 pull requests.
А если хочется что-то добавить, почему бы и не добавить?
А NoRM поддерживает «частичную загрузку документов» (см. 1 часть поста)?
Интересно, спасибо.
Чем больше работаю с sql, тем больше заглядываюсь на документо ориентированные базы данных )
Если вы хотите обновить объект, тогда лучше использовать update, а не save целого объекта.
Это будет гораздо быстрее.

Кстати, интересно, как сработает Query.And если в нем будет несколько условий по одному и тому же полю?
Например:
Query.And(
Query.LTE(«HighLevelCodes.Min», nCodeValue),
Query.GTE(«HighLevelCodes.Min», nCodeValue-100)
)
Это неправильно, я не помню точно выдаст он ошибку или просто выбенет неправильно, но в данном случае правильный запрос будет
var q =Query.LTE(«HighLevelCodes.Min», nCodeValue).GTE(«HighLevelCodes.Min», nCodeValue-100);
Поспешил отправить, правильно:
var q =Query.LTE(«HighLevelCodes.Min», nCodeValue).GTE(nCodeValue-100);
Я клоню к тому, что Монга не может построить запрос по одному и тому же полю с условием AND
Это пока не реализованно, а данный синтаксис такое написать позволяет.
Есть еще один хитрый момент. Если через js в mongo shell сохранить документ, одно из полей которого целое число, то в bson оно сохранится как double из-за особенностей javascript при работе с числами. Соответственно при попытке получить этот объект из C# получаем эксепшин.
Sign up to leave a comment.

Articles