繁体   English   中英

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

[英]retrieving entire array from MongoDB with C#

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

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

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

是引发错误还是仅仅是空的?

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

但是另一件事是,集合中是否有数据,并且字段是否对应于类属性? 不需要时,您必须使用类映射

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM