MongoDb c# driver 2.0 查询样式
MongoDb c# driver 2.0 query styles
早期我们为 MongoDb
使用 LINQ
提供程序,但现在我们已经迁移到 MongoDb c# driver 2.0
,有些事情我不明白。
当我们使用 LINQ
提供商时,查询如下所示:
var query = from c in dbCollection.AsQueryable()
where c.UserId == userId && c.CampaignId == campaignId
select c;
但现在我可以通过几种方式实现它:
var query =
Builders<Analytics>.Filter.Eq(a => a.UserId, userId) &
Builders<Analytics>.Filter.Eq(a => a.CampaignId, campaignId);
和
Builders<Analytics>.Filter.Where(
c => c.created >= Convert.ToDateTime(dateFrom) &&
c.created <= Convert.ToDateTime(dateTo));
这些方法有什么区别或优势吗?
在我曾经做的 MongoDB 教程中,他们说你可以随时使用 LINQ,但你不应该强迫它。
这仅仅是因为并非所有内容都已在 LINQ 中实现,并且可能不会(或什至不可能)通过 LINQ "way" 实现。
这实际上意味着您可以同时使用这两种方式。您可以尽可能使用 Fluent API 或 LINQ。
早期我们为 MongoDb
使用 LINQ
提供程序,但现在我们已经迁移到 MongoDb c# driver 2.0
,有些事情我不明白。
当我们使用 LINQ
提供商时,查询如下所示:
var query = from c in dbCollection.AsQueryable()
where c.UserId == userId && c.CampaignId == campaignId
select c;
但现在我可以通过几种方式实现它:
var query =
Builders<Analytics>.Filter.Eq(a => a.UserId, userId) &
Builders<Analytics>.Filter.Eq(a => a.CampaignId, campaignId);
和
Builders<Analytics>.Filter.Where(
c => c.created >= Convert.ToDateTime(dateFrom) &&
c.created <= Convert.ToDateTime(dateTo));
这些方法有什么区别或优势吗?
在我曾经做的 MongoDB 教程中,他们说你可以随时使用 LINQ,但你不应该强迫它。 这仅仅是因为并非所有内容都已在 LINQ 中实现,并且可能不会(或什至不可能)通过 LINQ "way" 实现。 这实际上意味着您可以同时使用这两种方式。您可以尽可能使用 Fluent API 或 LINQ。