Mongodb C# - 制作一个固定大小的队列

时间:2017-12-25 15:32:51

标签: c# mongodb

由于少数人被误导,因为我在标题中只提到了MongoDB:问题是关于如何在MongoDB中对属性进行此操作。

我有一个像这样的对象:

{
    List<string> MyQueue;
}

有没有办法将条目数量限制为特定数字,这样当我推入新值时,较旧的值可能会被删除?

1 个答案:

答案 0 :(得分:0)

您可以像这样创建自定义通用队列:

public class FixedQueue<T>
{
    private ConcurrentQueue<T> m_Queue = new ConcurrentQueue<T>();
    private Int3 m_Limit;
    private Object m_Lock = new Object();

    public Int32 Limit
    {
        get { return m_Limit; }
        set { m_Limit = value; }
    }

    public FixedQueue<T>(Int32 limit)
    {
        m_Limit = limit;
    }

    public void Enqueue(T obj)
    {
        m_Queue.Enqueue(obj);

        lock (m_Lock)
        {
            T overflow;
            while ((m_Queue.Count > m_Limit) && m_Queue.TryDequeue(out overflow)) ;
        }
    }
}

在将新项目排入队列后,它会自动将超出设定限制的所有最旧项目出列。