c# - 过滤mongodb数据

标签 c# .net mongodb mongodb-.net-driver

我有以下模型:

基类:

public abstract class Identifiable{
    private ObjectId id;
    private string name;

    protected Identifiable(){
        id = ObjectId.GenerateNewId();
    }

    [BsonId]
    public ObjectId Id{
        get { return id; }
        set { id = value; }
    }

    [BsonRequired]
    public string Name{
        get { return name; }
        set { name = value; }
    }
}

名字是独一无二的。
channel 类

 public class Channel : Identifiable{
    private DateTime creationDate;

    private string url;
    private DailyPrograming dailyPrograming;

    public DailyPrograming DailyPrograming{
        get { return dailyPrograming; }
        set { dailyPrograming = value; }
    }

    public DateTime CreationDate{
        get { return creationDate; }
        set { creationDate = value; }
    }

    public string Url{
        get { return url; }
        set { url = value; }
    }
}

每日节目。 name 属性是存储为 ddMMyyyy 的日期:

public class DailyPrograming : Identifiable{
    public DailyPrograming(){
        DailyPrograms = new List<Program>(30);
    }

    public IList<Program> DailyPrograms { get; set; }
}

程序:

public class Program : Identifiable{
    private DateTime programDate;
    private string category;
    private string description;

    public DateTime ProgramDate{
        get { return programDate; }
        set { programDate = value; }
    }

    public string Category{
        get { return category; }
        set { category = value; }
    }

    public string Description{
        get { return description; }
        set { description = value; }
    }
}

现在,我想使用以下方法过滤特定日期的特定 channel 的节目:

public DailyPrograming GetProgramsForDate(string channelId, string prgDate){
        ObjectId id = new ObjectId(channelId);
        IMongoQuery query = Query.And(Query<Channel>.EQ(c => c.Id, id), 
            Query<DailyPrograming>.EQ(dp => dp.Name, prgDate));
        var result = Database.GetCollection<DailyPrograming>(CollectionName).Find(query).FirstOrDefault();
        return result;
    }

但它从不返回现有数据。如何检索某个日期的 channel 节目? -

最佳答案

var builder = Builders<BsonDocument>.Filter;
var filt = builder.Eq("Price", "9.20")
         & builder.Eq("ProductName", "WH-208");
var list = await collection.Find(filt).ToListAsync();

我们可以使用&代替$and。参见 this post ,再举个例子。

关于c# - 过滤mongodb数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28095210/

相关文章:

c# - 检测格式日期

c# - 在 .NET Core 2.1 中使用通用主机正常关闭

java - 吗啡聚合不同的映射键

javascript - 引用错误: user is not defined at server. js Passportjs

node.js - 检查数组中是否存在所有元素

c# - 如何在 Visual Studio 2022 中使用日期/时间更改 AssemblyInfo.cs AssemblyVersion 并每天将修订增加一

c# - 最小起订量 - 模拟 MVC Controller 的 Response.Cookies.Clear()

c# - 找出哪些短语在字符串中被多次使用

c# - 使用 .NET 的报告和数据可视化?

c# - HttpListeners 和端口