mongodb C# V2:不同过滤方法的影响是什么
mongodb C# V2: What is the impact of the different Filter methods
据我所知,您可以使用 FindAsync 查询 mongodb:
- Linq.Where
- 为集合中的每个文档调用的 lambda 表达式
- 使用构建器创建过滤器<> class
现在:
- 搜索过程中的性能或文档加载方式是否存在差异?
- 有推荐的搜索方式吗?
- 查询嵌套文档的最佳方式是什么?
是的,有区别。 Linq 是性能最差的,但通常是最灵活和最安全的。接下来是 lambda 表达式,然后是过滤器,然后是第四个选项,即简单地使用 BsonDocument 并直接构造 mongodb 查询条件。您选择的内容需要符合您的方法和绩效标准。大多数时候,LINQ 的开销不足以放弃类型安全。
没有
使用上面4种方法之一。在数组上,您可能希望使用 $elemMatch operator。请记住,嵌入式文档只是简单地嵌入到存储的父文档中。应该不会有很多时候您需要嵌入文档而不是父文档。如果这种情况经常发生,您可能会考虑将嵌入的文档放入它们自己的集合中。
据我所知,您可以使用 FindAsync 查询 mongodb:
- Linq.Where
- 为集合中的每个文档调用的 lambda 表达式
- 使用构建器创建过滤器<> class
现在:
- 搜索过程中的性能或文档加载方式是否存在差异?
- 有推荐的搜索方式吗?
- 查询嵌套文档的最佳方式是什么?
是的,有区别。 Linq 是性能最差的,但通常是最灵活和最安全的。接下来是 lambda 表达式,然后是过滤器,然后是第四个选项,即简单地使用 BsonDocument 并直接构造 mongodb 查询条件。您选择的内容需要符合您的方法和绩效标准。大多数时候,LINQ 的开销不足以放弃类型安全。
没有
使用上面4种方法之一。在数组上,您可能希望使用 $elemMatch operator。请记住,嵌入式文档只是简单地嵌入到存储的父文档中。应该不会有很多时候您需要嵌入文档而不是父文档。如果这种情况经常发生,您可能会考虑将嵌入的文档放入它们自己的集合中。