7

次のようなドキュメントがあるとします。

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

"karl"今、データベースに残っているすべてのコメントを収集したいと思います。または、特定の日付のものだけです。"comments"インデックスが作成されていますが、そのクエリを実行するにはどうすればよいですか?

4

2 に答える 2

11

何かのようなもの:

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

テストしていませんが、アイデアはわかります。アイテム自体をドリルダウンできます。

インタラクティブなチュートリアルがたくさんあるので、このサイトに目を通すことをお勧めします:インタラクティブなチュートリアル

于 2011-12-17T15:32:23.733 に答える
6

$elemMatch を使用して、同じドキュメント内の複数の条件に一致させる必要があります。

何かのようなもの:

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

詳しくはこちらをご覧ください。

于 2011-12-17T15:42:41.167 に答える