我正在寻找使我们的mongo查询更快更有效的方法。
我们已使用GetCollection<T>("CollectionName")
收集了这些收藏品。
但是,我们应该使用Query.EQ("fieldname", "fielddata")
还是Query<t>.EQ(x => x.FieldName, "fielddata")
来构建查询?我个人更喜欢第二种方式,但效率更高吗?
有什么区别吗?我们应该使用哪个?
假设它们在相同的硬件上运行,则查询相同的数据库。
答案 0 :(得分:2)
嗯...
Query.EQ(x =&gt; x.FieldName,“fieldData”)和Query.EQ(“fieldName”,“fieldData”)都会产生相同的json - {“fieldName”:“fieldData”}假设您已将T.FieldName属性映射到camelCase“fieldName”。
鉴于此,当然不使用泛型会带来更快的体验。它必须做更少的工作。使用类型化表单意味着我们需要找到映射信息并应用它。
但是这里的速度增长在很大程度上是不明显的,除非你每秒钟做数百万的这些事情,这可能会被满足查询服务器端的网络和mongo黯然失色。最好的办法是衡量它。
最终,通用表单存在的原因是您不必在任何地方都有您的映射信息。
答案 1 :(得分:1)
它们之间没有区别
Mongo Engine与Query<t>.EQ(x => x.FieldName, "fielddata")
和Query.EQ("fieldname", "fielddata")
的行为相同,最后两者将转换为Bason Document { 'FieldName', 'fielddata'}