2017-04-17 100 views
0

嗨場,我有以下收集結構:獲取從陣列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" 
 
     } 
 
    ] 
 
}

我想通過使用這些值來獲得Voters.peopleId的價值。

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

我想這和它沒有工作,它返回整個文檔,但我想要的回報只是一個字段:

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