2016-09-03 4 views
0

MongoDBデータベースに挿入した2つの "文書"があります。基本的な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"]}) 

2番目のドキュメントから回答値にアクセスしたいだけです。私はドキュメントを読んでいて、うまく動作していないようです。私は問題なしで最初の文書から回答値を取り出すことができます:var str = questionsList.findOne({}, {question: 1}).answer;私はfindOneを使用しているので私は他の一致を見つけることができないと推測します。問題は、2番目の文書とそれに対応する答えを引き出すことができないことです。私はさまざまな方法を試してみました:

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

私の究極の目標は、私が何をしないのですchoicesからクリック1の回答の一つで、この答えを比較するのですか?

答えて

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 

我々は、他のオブジェクト(すなわち、オブジェクトのリスト内の第1およびドット表記法を使用して)として処理されます

関連する問題