2012-05-25 2 views
2

I는 다음과 같이 모음 사용자 도착했습니다 :열쇠로 몽고 컬렉션의 자녀를 얻는 방법?

{ 
_id: myid, 
name : 'blabla', 
ia : { 
     [0]-> 'an id', 
     [1]-> 'a second id' 
     } 
} 

그리고 난 아이오와의 첫 ID를 갖고 싶어를, 그래서 내가 그런 걸 시도 :

User.find({ _id: id, ia :{ key : indexia} }, ['ia']).populate('ia').run(rendu); 

ID = 대한 myid을 , indexia = 0입니다.

"iia : {key : indexia}"나는 내 모든 것을 얻습니다 ...하지만 나는 하나만 원합니다.

희망은 분명했습니다. 감사합니다.

+0

요청 사항을 올바르게 이해하지 못했습니다. 정확히 무엇을 얻고, 무엇을 얻고 싶습니까? 실제/예상 JSON을 게시 하시겠습니까? – Pierre

+0

내 컬렉션 : { "_id": { "$의 OID": "4fac50bda7087c0c14000001"}, "IA": [ "4fbec72f7f0257a815000004", "4fbed51b53795ffc06000001", "4fbee32403949f7c03000001"], "메일"의 "@ a를 .FR " "이름 ":"A ", "비밀번호 ":"5267768822ee624d48fce15ec5ca79cbd602cb7f4c2157a516556991f22ef8c7b5ef7b18d1ff41c59370efb0858651d44a936c11b7b144c48fe04df3c6a3e8da "} 에서 정보 필자 가지고 : 사용자 _id (4fac50bda7087c0c14000001)와 IA의 키 참조 : (첫 번째 또는를 세 번째). 그리고 나는 ia의 이드를 검색하고 싶다. 예제 : 4fbed51b53795ffc06000001 – user1418079

답변

0

감사 :

User.find({ _id: id }).only('ia').slice('ia', indexia, 1).populate('ia').run(rendu); 

유일한 ('IA')는 t의 일을 돈, 그러나 큰 문제.

2

MongoDB find() 명령은 전체 문서와 일치하도록 설계되었습니다.

다음 쿼리를

{ _id: id, ia :{ key : indexia} } 

를 실행

...이 " _id이 동일 곳 idia 객체 {key:0} 같다"를 의미한다. 그게 아마도 이 아니고입니다.

"iia : {key : indexia}"나는 내 모든 것을 얻습니다. 그러나 나는 하나만 원합니다.

주어진 문서를 반환하려는 것처럼 들립니다. 그 문서는 here입니다. 귀하의 경우에는 다음과 같습니다.

find({ _id: id}, { 'ia.0' : 1 }) 

찾기의 첫 번째 부분에서 문서를 찾을 수 있습니다. 두 번째 부분은 특정 필드를 반환합니다.

0

귀하의 컬렉션에 스키마가 나타납니다 :

{ "_id" : "id", 
    "ia" : ["id1","id2","id3"], 
    etc. 
} 

이 경우를 쿼리가 될 것 "IA"필드의 단지 최초의 "ID"를 얻을 수 있습니다 :

find({}, { "ia" : {$slice:1 } }) 

을 당신 $ 슬라이스 운영자 here에 대한 자세한 내용을 볼 수 있습니다. 몽구스는 query page에서 $ slice 연산자에 대한 지원을 문서화합니다. 희망이 도움이됩니다! 그런 당신의 도움이 그것은 노동자에 대한