[英]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.