用c#从MongoDB中检索整个数组

本文关键字:数组 检索 MongoDB | 更新日期: 2023-09-27 18:07:31

我试图检索数组内的所有文档,我想把所有这些在c#中的列表。

我有一个名为Subject的类,其中包含一个名为follower的用户列表。它是这样定义的:

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" : [ ]
}

用c#从MongoDB中检索整个数组

是抛出错误还是只是空的

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

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

这是你想要的吗?或者您正在寻找"追随者"数组?

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...
}