2011-07-01 4 views
2

출연 하위 컬렉션을 만들 수 있습니까? 당신이 대안으로 제시 할 무엇 latest_messages은 10MongoDb 출연 하위 컬렉션

그렇지 않은 경우에 덮인된다

user = { 
    name: String, 
    latest_messages: [String] 
} 

: 내가 좋아하는 뭔가를 할 노력하고있어?

업데이트 1 : 수동으로 덮인 배열을 유지하는 것이 유일한 해결책 인 것처럼

이 나타납니다. 이를 수행하는 방법은 다음과 같습니다.

joe = {name: 'Joe', latest_messages: ['', '', '', '', '', '', '', '', '', '']} 
db.users.save(joe) 

db.users.update({name: 'Joe'}, {$push: {'latest_messages': 'hello'}}) 
db.users.update({name: 'Joe'}, {$pop: {'latest_messages': -1}}) 

db.users.update({name: 'Joe'}, {$push: {'latest_messages': 'world'}}) 
db.users.update({name: 'Joe'}, {$pop: {'latest_messages': -1}}) 

더 효율적인 방법에 대한 제안이 있으십니까?

업데이트 2 :

하나 개의 원자 작업으로 두 (밀어 & 팝업을) 할 수있는 기능을 추가하기 위해 요청하는 open Jira ticket, "SERVER-1050"있다.

+0

@ asya-kamsky의 답변 –

답변

0

제한된 컬렉션의 전체 문서 수만 지정할 수 있습니다. 앱의 일부 검사를 거치지 않는 한 배열의 크기를 제한 할 방법이 없습니다.

+0

을 참조하십시오. 위의 것보다 더 효율적으로 만드는 방법이 있습니까? –

+1

http://docs.mongodb.org/manual/reference/operator/slice/#op._S_slice – Tobias

0

각 사용자에 대해 별도의 자판 모음을 만들 수 있습니까? 따라서 컬렉션의 이름은 각 사용자의 이름입니다. 컬렉션이 많으면 MongoDB가 느려지는지 모르겠습니다. 몇 명의 사용자가 있습니까? 100, 1000, 10000 같은게 ...?

+0

100,000을 말하십시오. 이것은 컬렉션의 비표준 사용과 같은 느낌입니다. 성능에 영향이 있습니까? –

+0

최대 값이있는 것 같습니다 : http://www.mongodb.org/display/DOCS/Using+a+Large+Number+of+Collections – TTT

0

JIRA 보드에 정확히 2 년 된 요청이 있습니다. 1.6 이후 mongodb의 다음 버전에 추가 될 예정이므로 숨을 멈추지 않을 것입니다. 버전 2.4로

https://jira.mongodb.org/browse/SERVER-991

2

이 소위 "덮인 배열을"일을 할 수있는 기능이 있습니다. 이렇게하면 $each, $slice$sort 연산자와 함께 $push 개의 문서를 배열에 배치하여 지정된 크기를 유지하면서 배열에 하나 이상의 문서를 추가하고 지정된 하위 필드 필드별로 정렬 할 수 있습니다.

정확한 구문과 예를 참조하십시오. here.

관련 문제