使用C#从MongoDB检索整个数组

时间:2016-09-19 13:00:40

标签: c# arrays mongodb

我正在尝试检索数组中的所有文档,并且我希望将所有这些文档放在C#中的列表中。

我有一个名为Subject的类,其中包含一个名为followers的用户列表。它的定义如下:

public class Subject
{
    public Guid _id { get; set; }
    public List<User> Followers { get; set; }
}

我正在使用此功能:

await db.Subjects.Find( FILTER HERE ).ToListAsync();

我似乎无法让它发挥作用,任何帮助都会受到赞赏!

编辑:这是我的主题的文档结构

{
    "_id" : BinData(3,"/mRuH9AiWEiEJV2Ad0UAVg=="),
    "name" : "Subject test",
    "address" : {
            "Street" : "Street Test",
            "Postalcode" : "1234AB",
            "City" : "City Test",
            "CountryCode" : "NL",
            "Telephone" : "0612345678",
            "Coordinates" : {
                    "Longitude" : "1234",
                    "Latitude" : "1234"
            }
    },
    "Followers" : [
            DBRef("Name test", BinData(3,"uwXp/avTGEeeaR0muzYvOA==")),
            DBRef("Name test", BinData(3,"dK15dIEW302RWg/F1b+rtg=="))
    ],
    "Chefs" : [ ],
    "Owners" : [ ]
}

和我的用户结构:

{
    "_id" : BinData(3,"uwXp/avTGEeeaR0muzYvOA=="),
    "name" : "Name test",
    "loginDate" : ISODate("0001-01-01T00:00:00Z"),
    "followers" : [ ]
}

1 个答案:

答案 0 :(得分:0)

是抛出错误还是只是空?

var MySubjets = await db.Subjects.Find( FILTER HERE ).ToListAsync();

必须返回与您的过滤器匹配的主题数组。

这就是你想要的吗?或者您正在寻找&#34;追随者&#34;数组?

var MySubject = await db.Subjects.Find( FILTER HERE ).FirstOrDefault();
foreach (User MyFollower in MySubject.Followers)
{
   //do your stuff...
}

但另一个重要的事情是,集合中是否存在数据并且字段是否与类属性相对应?如果不是,您必须使用classmappings

对于DBRef,请执行以下操作:

var MySubject = await db.Subjects.Find( FILTER HERE ).FirstOrDefault();
foreach (var MyRelatedDocument in MySubject.Followers)
{
    User MyFollower = db.FetchDBRefAs<User>(MyRelatedDocument);
   //do your stuff...
}