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

问题描述 投票:1回答:1

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

我有一个像这样的对象:

{
    List<string> MyQueue;
}

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

c# mongodb
1个回答
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)) ;
        }
    }
}

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

© www.soinside.com 2019 - 2024. All rights reserved.