2017-04-17 6 views
0

하이에서 가져 오기 필드를 나는 다음과 같은 수집 구조를 가지고 : 나는이 값을 사용하여 Voters.peopleId의 가치를 좀하고 싶습니다배열 MongoDB를 유성

{ 
 
    "_id" : "HZw2ktDPm6EWnGaFt", 
 
    "createdAt" : ISODate("2017-04-16T17:40:59.055Z"), 
 
    "pollName" : "", 
 
    "entryOwner" : "eHPeQPMd94MQFNXmg", 
 
    "question" : [ 
 
     { 
 
      "name" : "Question 1", 
 
      "questionId" : "sdPzbn9SWjE46HtM2" 
 
     }, 
 
     { 
 
      "name" : "Question 2", 
 
      "questionId" : "vpMrpbJ2LZKMLEYKe" 
 
     } 
 
    ], 
 
    "sharedWith" : [ 
 
     { 
 
      "id" : "jjX5EDdqMtcyQwd6h", 
 
      "name" : "person 1", 
 
      "votes" : 0 
 
     }, 
 
     { 
 
      "id" : "b3Ctr6LFZMd9smd4B", 
 
      "name" : "person 2", 
 
      "votes" : 0 
 
     } 
 
    ], 
 
    "voters" : [ 
 
     { 
 
      "voterId" : "eHPeQPMd94MQFNXmg", 
 
      "questionId" : "vpMrpbJ2LZKMLEYKe", 
 
      "optionId" : "EKnYKXEFBWnr4hnCP", 
 
      "peopleId" : "b3Ctr6LFZMd9smd4B" 
 
     }, 
 
     { 
 
      "voterId" : "eHPeQPMd94MQFNXmg", 
 
      "questionId" : "vpMrpbJ2LZKMLEYKe", 
 
      "optionId" : "EKnYKXEFBWnr4hnCP", 
 
      "peopleId" : "jjX5EDdqMtcyQwd6h" 
 
     }, 
 
     { 
 
      "voterId" : "eHPeQPMd94MQFNXmg", 
 
      "questionId" : "sdPzbn9SWjE46HtM2", 
 
      "optionId" : "rjYLitibXDJjGYKM7", 
 
      "peopleId" : "b3Ctr6LFZMd9smd4B" 
 
     }, 
 
     { 
 
      "voterId" : "eHPeQPMd94MQFNXmg", 
 
      "questionId" : "Q6JiaGFAi2LRHS7GQ", 
 
      "optionId" : "wFoduKp23cSYJJG9i", 
 
      "peopleId" : "b3Ctr6LFZMd9smd4B" 
 
     } 
 
    ] 
 
}

합니다.

 "voterId" : "eHPeQPMd94MQFNXmg", 
     "questionId" : "vpMrpbJ2LZKMLEYKe", 
     "optionId" : "EKnYKXEFBWnr4hnCP", 

나는이 시도하고 그것이 전체 문서 반환 작업 didnt는하지만 내가 반환으로 원하는 단 하나 개의 필드 :

var getPeopleId = Polls.findOne({ 
 
     _id:this.props.poll._id}, {"voters": { 
 
      $elemMatch :{voterId:Meteor.userId(),questionId:selectedQuestionId,optionId:selectedOptionId}}})

많은 감사

답변

0

쿼리 (첫 번째 매개 변수) 대신 프로젝션 (두 번째 매개 변수)에 $elemMatch이 있습니다. 또한 첫 번째 경기 만 포함하도록 결과를 투사해야합니다. 시도 :

const poll = Polls.findOne(
    { 
    _id:this.props.poll._id, 
    voters: { 
     $elemMatch: { 
     voterId: Meteor.userId(), 
     questionId: selectedQuestionId, 
     optionId: selectedOptionId 
    } 
    },{ 
    'voters.$': 1 
    }); 
// guard against missing keys or no results 
const peopleId = poll && poll.voters && poll.voters.peopleId; 
+0

답장을 보내 주셔서 감사합니다.하지만 모든 필드를 반환합니다. – picacode