由于一些人被误导,因为我在标题中只提到了MongoDB:问题是关于如何在MongoDB中对一个属性进行此操作。
我有一个像这样的对象:
{
List<string> MyQueue;
}
有没有办法将条目数量限制为特定数字,以便当我推入新值时,较旧的值可能会被删除?
您可以像这样创建自定义通用队列:
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)) ;
}
}
}
在将新项目排队后,它将自动将超出设定限制的所有最旧项目出列。