2014-09-25 3 views
0

질문의 모호성 때문에 유감스럽게도, 나는 그것을 어떻게 바꿔야할지 모릅니다. 질문은 MongoDB와 그 안에 저장된 정보에 관한 것입니다.MongoDB 포인터 또는 실제 사본?

use mydb 
db.users.insert({name:"whatever", follow:[]) 
db.users.insert({name:"whatever2", follow:[]) 

나는 사용자가 다른를 따르십시오 :

나는 사용자의 컬렉션이

나는 다음과 일을 생각하고 방법의 일종이다
var userToFollow = db.users.findOne({name:"whatever2"}); 
db.users.update({name:"whatever"}, {$push:{follow:userToFollow}}); 
/* 
* I know that in reality, this query will return more than one user, 
* but as I'm letting mongo create the ids, I don't actually know a better approach. 
* Please enlighten me. 
*/ 

. 하지만 나는 같은 질문을 가지고, 그것은 모든 사용자를 따르는 배열에 복사하거나 실제로 해당 사용자에 대한 포인터를 저장하고 쿼리를 통해 액세스 할 때 어떻게 든 내부적으로 검색 할 것인가? 더 좋은 방법이 있습니까?

답변

1

실제 사본입니다. 수술 후 검색 할 수있는 것과 똑같습니다.
follow이라는 파일에서 신속하게 내용에 액세스하고 싶다면, 그 방법은 마치 _id의 배열로 저장할 수 있습니다.

+0

2 개의 쿼리를 수행하는 것보다 더 좋은 방법이 있는지 알고 있습니까? 사본 인 경우 업데이트되지 않은 데이터를 가질 수 있음을 의미합니다. 문제를 해결할 방법을 알고 있습니까? – camou

+0

당신의 운영에 대한 나의 이해에 따르면''follow'에'name'을 직접 저장하여 목표를 달성 할 수 있습니까? 즉,'db.user.update ({name : "whatever"}, {$ addToSet : {follow : "whatever2"}})'입니다. – Wizard

+0

예, 제가 현재하고있는 일입니다. 더 좋은 방법이있을 거라고 생각했습니다. 그렇지 않은 것 같습니다. 고마워. @ 마법사. – camou