2017-12-25 4 views
1

제목에서 MongoDB에 대해서만 언급했기 때문에 몇 사람이 잘못 알고 있습니다. MongoDB에서이 문제를 해결하는 방법에 대한 질문이 있습니다.Mongodb C# - 고정 크기 큐 만들기

{ 
    List<string> MyQueue; 
} 

나는 새로운 값을 누르면, 이전의 값이 떨어졌다받을 수 있도록 특정 번호에 항목의 수를 고정 할 수있는 방법이 있나요 :

나는이 같은 물체가?

+1

[새 enques에서 이전 값을 자동으로 제거하는 고정 크기 대기열]의 가능한 복제본 (https://stackoverflow.com/questions/5852863/fixed-size-queue-which-automatically-dequeues-old-values-upon- new-enques) –

+0

"가능한 중복"에 동의하지 않습니다. MongoDB와 어떻게 관련이 있습니까? – thmshd

+0

일반적으로 "출전 된 콜렉션"을 확인해 봤습니까? 이 같은 Property에서는별로 작동하지 않지만 콜렉션에서는 작동합니다. https://stackoverflow.com/a/30969330/265165 – thmshd

답변

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)) ; 
     } 
    } 
} 

새 항목을 대기열에시, 자동으로 설정된 제한을 오버 플로우 모든 오래된 항목을 대기열에서 제외됩니다.

+0

mongoDB와 관련이 없다. 문제는 DB 수준에서 이것을 만드는 방법입니다 – Thomas

+0

다음은 귀하가 찾고있는 것입니다 : https://docs.mongodb.com/manual/core/capped-collections/. 나는 이것을 명확히하기 위해 나의 대답을 편집하고있다. –

+0

thmshd에 나의 코멘트를보십시오; 제한된 컬렉션은 속성이 아닌 전체 컬렉션에 적용됩니다. – Thomas