簡體   English   中英

從數組MongoDB Meteor獲取字段

[英]Fetch a field from array MongoDB Meteor

嗨,我具有以下集合結構:

 { "_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}}}) 

非常感謝

您在投影(第二個參數)中有$elemMatch而不是查詢(第一個參數)中的$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;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM