0

我想知道对作为集合的一部分的列表进行计数的最佳方法,为简单起见,我已抽象为以下模型:

public class User
{
    [BsonId]
    public ObjectId Id { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public List<ObjectId> Followers { get; set; }
    public List<ObjectId> Following { get; set; }  
}

假设每个属性的追随者/追随者的平均值可能在 2k 左右,我知道有些人喜欢使用inc预先计算信息,在上述情况下是否推荐?如果是这种情况,可能是使用 C# 驱动程序的方法?

4

1 回答 1

0

如果您有大量用户(例如数百万)并且您经常查询此计数,为什么不使用 map reduce 呢?从 c# 驱动程序中,您可以读取 map reduce 的结果。

如果您有少量用户(1000 个),您可能可以按需使用聚合框架,具体取决于您需要查询的速度。请参阅此处的示例Mongo order by length of array。从 c# 驱动程序中,您可以执行聚合

如果您决定非规范化保存计数,您可以从 mongo shell 运行迁移以通过游标创建初始值。请参阅我对这些类型的迁移 MongoDB 的回答:模式迁移、更新或插入

于 2014-01-03T04:59:39.770 回答