2011-12-17 11 views
7

のは、私はこのような文書を持っているとしましょう:MongoDBのクエリ

{ 
    _id: "cow", 
    comments: [ 
     {user: "karl", comment: "I like cows.", at: /*a date*/}, 
     {user: "harry", comment: "Cows are the best.", at: /*a date*/} 
    ] 
} 

は、今私は"karl"が私のデシベルに残っていることをすべてのコメントを収集したいです。または特定の日付のものだけ。 "comments"がインデックス化され、どのように私はそれを照会することができますか?

答えて

9

のような何か:

db.foo.find({"comments.user":"karl", "comments.at":{$gt:{dateObject}}); 

がテストしていませんが、あなたのアイデアを得ます。そのようなアイテムをドリルダウンすることができます。

私はそれがインタラクティブなチュートリアルの多大を通してあなたを駆動させるようにこのサイトを経由お勧めします:Interactive Tutorial

6

あなたが同じドキュメント内の複数の条件に一致するように$ elemMatchを使用する必要があります。以下のような

何か:

db.foo.find({comments: {"$elemMatch": {user: "karl", at: {$gt:{dateObject}}}}) 

は詳細についてhereを参照してください。

+0

あなたのリンクが合流ログイン画面につながる.... – drevicko

+1

のMongoDBのウェブサイトは、そのドキュメントのURLを変更 - とにかく私は、新しいサイトに関連する何かを私の答えを更新しました。 –