2016-09-03 4 views
0

MongoDB 데이터베이스에 삽입 한 두 개의 "문서"가 있습니다.기본 MongoDb 검색

questionsList.insert({question: "When was the War of 1812", answer: "1812", answers: ["1811", "1812", "1813", "1814"]}) 

questionsList.insert({question: "What year did the US land on the moon?", answer: "1969", answers: ["1969", "1970", "1971", "1972"]}) 

단순히 두 번째 문서의 답변 값에 액세스하려고합니다. 나는 설명서를 읽었으며 작동하지 않는 것 같습니다. 첫 번째 문서에서 문제없이 답 값을 검색 할 수 있습니다. var str = questionsList.findOne({}, {question: 1}).answer;findOne을 사용하고 있기 때문에 다른 일치 항목을 찾을 수 없습니다. 문제는 두 번째 문서와 이에 해당하는 대답을 끌어 올릴 수 없다는 것입니다. 나는 여러 가지 방법을 시도 :

questionList.find({}, {answer: 1}) 
questionList.find({answer: 1}) 
questionList.find({}).answer 

내 궁극적 인 목표는 choices에서 한 답변은 내가 무엇을 놓치고 클릭 한이 답을 비교하는 것입니다?

답변

1

시나리오를 올바르게 이해했다면 MongoDB가 특정 순서로 문서를 저장하지 않기 때문에 문서 색인을 기반으로 문서를 검색하려고합니다 (올바른 순서가 아닙니다).

findOne이 작동하는 이유는 컬렉션의 첫 번째 문서를 반환하기 때문입니다.

내가 대신 수행해야한다고 생각하는 것은 질문에 따라 대답을 검색하는 것입니다. 같은
뭔가 :

db.questionsList.find({question:"What year did the US land on the moon?"},{answer:1}) 

업데이트 : meteor.js

questionsList.find({question:"What year did the US land on the moon?"}).fetch()[0].answer 

우리가 제공해야하는 이유 유청의 경우 [0]() 페치 객체의 배열을 반환합니다. (동일한 키를 가진 여러 문서가있을 수 있기 때문에)

+0

올바른 문서를 가리키는 것 같습니다. 그러나 나는 전체 객체가 아니라 답의 가치를 참조 할 수있는 방법을 찾고 있습니다. 나는 유성을 사용하고 있다고 언급 했어야했다. 가져 오기를 추가하면 여전히 전체 개체를 참조합니다. – Matty

+0

@Matty가 답변을 업데이트했습니다. –

0

마지막 단계입니다 : 우리는 다른 객체로 취급하는

questionsList.find({"question": "You are human"}, {"answer": 1}).fetch()[0].answer 

(즉, 개체의 목록 내 및 사용하여 첫 번째 도트 표기법)